알고리즘 풀이/백준

[백준][Java] 1302번 베스트셀러

배게 2018. 4. 21. 08:15
728x90

ArrayList로 받는 이유는

중복되는 책들 때문에 배열의 크기가 정확하게 정해지지 않았기 때문입니다.


books_array로 중복되지 않는 책들의 집합들을 저장합니다

저장한 index에 맞추어서 책의 개수를 저장할

idx또한 counting 해줍니다. 이 때, 책의 개수가 최대인 책의 index를

max변수에 저장해두는 식을 적어줍니다.


max의 값과 동일한 수의 책들의 집합을 res_array에 넣어주고,

사전순으로 Sorting 후에

가장 맨 앞의 책을 출력해줍니다.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		
		ArrayList<String> books_array = new ArrayList<String>();
		ArrayList<String> res_array = new ArrayList<String>();
		
		int[] idx = new int[1001];
		int max=0;
		
		for(int i=0;i<N;i++) {
			String input = sc.next();
			if(!books_array.contains(input)) {
				books_array.add(input);
			}
			idx[books_array.indexOf(input)]++;
			if(idx[books_array.indexOf(input)]>max) 
				max=idx[books_array.indexOf(input)];
		}
		
		for(int i=0;i<N;i++) {
			if(idx[i]==max) res_array.add(books_array.get(i));
		}
		
		Collections.sort(res_array);
		
		System.out.println(res_array.get(0));
	}
}