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