알고리즘/백준
3052 나머지
ukkkk7
2023. 9. 5. 22:51
728x90
반응형
여러가지 풀이법이 있었다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//나누는 수가 42이기때문에 크기가 42인 배열 생성
boolean[] arr = new boolean[42];
int count = 0;
//10개의 수 입력 받기
for(int i = 0; i < 10; i++){
//입력받은 숫자 % 42 = 나머지일때 나머지 값이 같다면 동일한 배열을 초기화 하는 연산이 된다.
arr[(sc.nextInt()) % 42] = true;
}
for (boolean value : arr){
value에 배열값을 담고 true인 값만 if문으로 조건을 걸어 숫자를 세면 서로 다른 숫자들만 count가 증가
if (value){
count++;
}
}
System.out.println(count);
}
}
HashSet을 이용하면 코드의 길이가 확 줄어든다...컬렉션에는 익숙하지 않아서 생각조차 못한 방법
Set은 중복을 허용하지 않기 때문에 값을 담으면 알아서 중복된 값을 걸러준다 이후 size만 출력해주면 해결..
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
HashSet<Integer> h = new HashSet<Integer>();
for(int i = 0; i < 10; i++){
h.add(Integer.parseInt(br.readLine()) % 42 );
}
System.out.println(h.size());
}
}
728x90
반응형