문제.
현수네 반에는 N명의 학생들이 있습니다.
선생님은 반 학생들에게 1부터 10,000,000까지의 자연수 중에서 각자가 좋아하는 숫자 하나 적어 내라고 했습니다.
만약 N명의 학생들이 적어낸 숫자 중 중복된 숫자가 존재하면 D를 출력하고,
N명이 모두 각자 다른 숫자를 적어냈다면 U를 출력하는 프로그램을 작성하세요.
입력 예시
8
20 25 52 30 39 33 43 33
답 : D
나의 답변
public class Main {
public char solution(int n, int[] arr) {
char answer = 'U';
int flag=0;
for( int i=0; i<n-1; i++ ) {
for( int j=i+1; j<n; j++ ) {
if(arr[i]==arr[j]) {
flag=1;
break;
}
}
if(flag==1) break;
}
if(flag==1) answer='D';
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
for( int i=0; i<n; i++ ) {
arr[i] = sc.nextInt();
}
System.out.println(T.solution(n, arr));
}
}
또 다른 답변 (간단)
Arrays.sort를 이용해서 배열을 정렬한다. 중복값이면 그 값들이 나란히 있을 것이다.
public class Main {
public String solution(int n, int[] arr) {
String answer = "U";
Arrays.sort(arr);
for(int i=0; i<n-1; i++) {
if(arr[i]==arr[i+1]) return "D";
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
for( int i=0; i<n; i++ ) {
arr[i] = sc.nextInt();
}
System.out.println(T.solution(n, arr));
}
}