Backend
home
📝

[백준] 찍기

생성일
2025/04/14 07:20
태그
BaekJoon
게시일
2025/04/14
최종 편집 일시
2025/04/14 07:25

문제

해결 방안 고민

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
복사