현수네 반에는 N명의 학생들이 있습니다.
선생님은 반 학생들에게 1부터 10,000,000까지의 자연수 중에서 각자가 좋아하는 숫자 하나 적어 내라고 했습니다.
만약 N명의 학생들이 적어낸 숫자 중 중복된 숫자가 존재하면 D(duplication)를 출력하고, N 명이 모두 각자 다른 숫자를 적어냈다면 U(unique)를 출력하는 프로그램을 작성하세요.
▣ 입력설명
첫 번째 줄에 자연수 N(5<=N<=100,000)이 주어진다.
두 번째 줄에 학생들이 적어 낸 N개의 자연수가 입력된다.
▣ 출력설명
첫 번째 줄에 D 또는 U를 출력한다.
▣ 입력예제 1
8
20 25 52 30 39 33 43 33
▣ 출력예제 1
D
// Java Stream 활용
private static String solutionByStream(int N, int[] arr){
List<Integer> list = new ArrayList<>();
for (int i : arr) { // int[] to list, Integer 타입이 아니므로 반복문을 통해 값 전달
list.add(i);
}
List<Integer> distinctList = list.stream().distinct().collect(Collectors.toList());
// 배열 사이즈 검사
return list.size() == distinctList.size() ? "U" : "D";
}
// Java List 제공 함수 사용
private static String solutionByIterator(int N, int[] arr){
List<Integer> list = new ArrayList<>();
boolean duplicated = false;
for (Integer i : arr) {
if(!list.contains(i)){
list.add(i);
}else{
duplicated = true;
break;
}
}
// 배열 사이즈 검사
return duplicated ? "D" : "U";
}
public static void main(String[] args) {
int N = 8;
int[] arr = new int[]{1, 2, 3, 4, 5, 2};
System.out.println("solutionByStream > " + solutionByStream(N, arr));
System.out.println("solutionByIterator > " + solutionByIterator(N, arr));
}
'JAVA > 알고리즘' 카테고리의 다른 글
좌표정렬 (0) | 2021.06.08 |
---|---|
철수 짝궁 번호 출력 (0) | 2021.06.08 |
LSU 알고리즘 (0) | 2021.06.07 |
공주 구하기 (0) | 2021.06.02 |
쇠막대기 자르기 (괄호) (0) | 2021.06.02 |