더 좋은 문제 풀이가 있거나 궁금하신 점이 있다면 편하게 댓글 남겨주세요!
이번 문제는 중복되지 않은 숫자를 세는 것이 핵심이었습니다. 저는 이번 문제를 보자마자 중복 저장을 하지 않는 HashSet 을 사용하면 코드가 간결해지겠다는 생각이 들었습니다. 하지만 아직은 배열 문제임으로 배열로 문제를 풀어보고 HashSet을 이용한 풀이 방식을 추가하도록 하겠습니다.
먼저 코드를 간결하게 하기 위해 숫자를 입력 받음과 동시에 % 연산자를 사용하여 42로 나눈 나머지를 arr 배열에 저장하였습니다.
for(int i = 0; i< 10; i++){
arr[i] = sc.nextInt() % 42;
}
다음으로는 배열 정렬을 통해 문자열이 오름차순으로 정렬될 수 있게 Arrays.sort()
메소드를 사용하였습니다. (지난 시간에 배운 내용을 활용하시면 됩니다!!) Arrays.sort()를 사용하기 위해서는 import java.util.Arrays
를 import 해주어야 합니다.
Arrays.sort(arr);
마지막으로 앞의 값과 뒤의 값을 비교하며 두 값이 같지 않으면 cnt를 증가시켰습니다.
(모든 배열의 값이 같을 경우 1을 리턴해야 함으로 cnt의 초기값으로 1을 지정하였습니다.)
for(int i = 0; i< arr.length -1; i++){
if(arr[i] != arr[i+1] ) cnt++;
}
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int arr[] = new int[10];
int cnt = 1;
for(int i = 0; i< 10; i++){
arr[i] = sc.nextInt() % 42;
}
Arrays.sort(arr);
for(int i = 0; i< arr.length -1; i++){
if(arr[i] != arr[i+1] ) cnt++;
}
System.out.println(cnt);
}
}
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int arr[] = new int[10];
int cnt = 1;
for(int i = 0; i< 10; i++){
arr[i] = sc.nextInt() % 42;
}
for ( int i = 0; i < 10; i++ ) {
int temp = 0;
for ( int k = i+1; k < 10; k++ ) {
if ( arr[i] == arr[k] ) {
temp ++;
}
}
if ( temp == 0 ) {
cnt ++;
}
}
System.out.println(cnt);
}
}
import java.util.HashSet;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
HashSet<Integer> hashSet = new HashSet<Integer>();
for(int i = 0; i< 10; i++){
hashSet.add(sc.nextInt() % 42);
}
System.out.println(hashSet.size());
}
}