728x90
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
package BruteForce_Search;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static char[] sang = {'A','B','C','A','B','C','A','B','C','A','B','C'};
static char[] chang = {'B','A','B','C','B','A','B','C','B','A','B','C'};
static char[] hyeon = {'C','C','A','A','B','B','C','C','A','A','B','B'};
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st= new StringTokenizer(br.readLine());
int length = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
String str = st.nextToken().toUpperCase();
int index = 0;
int cntS = 0, cntC = 0, cntH = 0;
int max = 0;
for(int i = 0; i < length; i++){
if(index == 12) index = 0;
if(str.charAt(i) == sang[index]) cntS++;
if(str.charAt(i) == chang[index]) cntC++;
if(str.charAt(i) == hyeon[index]) cntH++;
index++;
}
int []cnt = {cntS,cntC,cntH};
for(int i = 0; i < cnt.length; i++){
if(max < cnt[i])
max = cnt[i];
}
System.out.println(max);
for(int i = 0; i < cnt.length; i++){
if(max == cnt[i]){
switch(i){
case 0:
System.out.println("Adrian");
break;
case 1:
System.out.println("Bruno");
break;
case 2:
System.out.println("Goran");
break;
}
}
}
}
/*
1. 규칙성을 보이는 갯수들(3,4,6)의 최소공배수가 12이므로 갯수를 12개로함
2. 그래서 문자열을 입력받은 뒤에, charAt이용해서 하나하나 비교함.
3. 각각 cnt를 정해서 같으면 ++해줌.
4. 이제 그 cnt를 배열에 저장해서 가장 큰 값을 고름
5. 큰 값과 일치한 index를 뽑아내서 각각 이름을 부여하면 됨 switch 이용
*/
}
|
cs |
처음에 이 문제를 봤을 때, 해시맵도 생각해보고 무언가 할게 많아 보여서 광범위하게 생각이 났다. 어려운 문제는 아니었는데 할 수 있는 방법들이 많지만, 그중 간단하면서 가독성 좋은 코드가 무엇일까 하는 생각이 어려웠다. 그래서 필요한 것들을 하나씩 하나씩 주석에 정리하면서 문제를 풀게 되었다.
728x90
'BOJ(Java)' 카테고리의 다른 글
자바(백준) 10448 유레카 이론 (0) | 2021.02.01 |
---|---|
자바(백준) 3040 백설 공주와 일곱 난쟁이 (0) | 2021.01.28 |
자바(백준) 2798 블랙잭 (0) | 2021.01.28 |
자바(백준) 2231 분해합 (0) | 2021.01.28 |
자바(백준) 1668 트로피 진열 (0) | 2021.01.28 |