본문 바로가기
코딩테스트 및 알고리즘

중복확인

by 영카이브 2024. 1. 31.

문제. 

현수네 반에는 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));
	}
}

 

 

 

 

 

 

 

 

 

참고 자료 출처 : https://www.inflearn.com/course/lecture?courseSlug=%EC%9E%90%EB%B0%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%ED%85%8C%EB%8C%80%EB%B9%84&unitId=72755&tab=curriculum

'코딩테스트 및 알고리즘' 카테고리의 다른 글

좌표 정렬  (0) 2024.02.06
정렬 응용  (0) 2024.02.03
LRU 알고리즘  (0) 2024.01.30
삽입정렬  (0) 2024.01.28
버블정렬  (0) 2024.01.27