문제
해결 방안 고민
•
3명의 찍는 방법을 토대로 3개의 배열을 생성하기로 했다.
•
max값이 여러 개인 경우 출력을 2개 이상 해야 하므로 StringBuilder를 활용하기로 했다.
해결 방법
•
정적 배열 3개를 생성한다.
•
max값을 찾기 위해 각각의 답안을 count 할 수 있는 변수 3개를 생성한다.
•
Math.max() 를 활용하여 최댓값을 찾는다.
•
문자열 출력의 성능을 고려하여 StringBuilder를 활용한다.
코드
package algo250414;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
// 백준 - 찍기 (브론즈 2)
public class Baek2966 {
private static final String[] person1 = {"A", "B", "C"};
private static final String[] person2 = {"B", "A", "B", "C"};
private static final String[] person3 = {"C", "C", "A", "A", "B", "B"};
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
String answer = br.readLine();
int correct1 = 0;
int correct2 = 0;
int correct3 = 0;
for (int i = 0; i < N; i++) {
char temp = answer.charAt(i);
if (person1[i % person1.length].charAt(0) == temp) correct1++;
if (person2[i % person2.length].charAt(0) == temp) correct2++;
if (person3[i % person3.length].charAt(0) == temp) correct3++;
}
int max = Math.max(correct1, Math.max(correct2, correct3));
System.out.println(max);
if (correct1 == max) sb.append("Adrian\n");
if (correct2 == max) sb.append("Bruno\n");
if (correct3 == max) sb.append("Goran\n");
System.out.println(sb);
}
}
Java
복사