반응형
https://www.acmicpc.net/problem/1475
이번 문제는 특별한 알고리즘은 없지만, 반례에 대해 다시 생각해 보게 돼서 작성하게 되었습니다.
방 번호의 숫자를 카운팅하여 max값을 출력하면 되는 간단한 문제입니다.
다만, 처음 코드를 작성할 때, 6와 9를 묶어서 6으로 카운팅 한 후에 홀수냐 짝수냐를 판별해서 다시 계산해 주는 부분을
max값 뒤에다가 작성하다보니 더 높은 카운트 숫자가 앞에 있음에도 불구하고 max가 6으로 잡히는 경우가 생겼습니다.
알고리즘 문제를 풀면서 반례를 찾아야 할 때, 아래를 중점적으로 보면 좋을 거 같습니다.
- 최대, 최소 크기 입력
- 문제에서 경계값이 되는 입력
- 자신의 코드에서 경계값이 되는 입력
문제 자체에서 특별한 경계값이 있는 경우도 있고, 구현 단계에서 자신만의 경계값이 만들어질 때도 있습니다.
문제를 해결하는 재미도 있지만, 반례를 찾았을 때의 기쁨도 상당한 거 같습니다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String N = br.readLine();
int[] count = new int[10];
Arrays.fill(count, 0);
for(int i = 0 ; i < N.length() ; i++) {
int number = Integer.parseInt(String.valueOf(N.charAt(i)));
if(number == 9) { // 9와 6을 하나로 집계
count[6]++;
}else {
count[number]++;
}
}
if(count[6] % 2 == 1) {
count[6] = count[6] / 2 + 1;
}else {
count[6] = count[6] / 2;
}
int max = 0;
for(int i = 0 ; i < count.length ; i++) {
max = Math.max(max, count[i]);
}
bw.write(String.valueOf(max));
br.close();
bw.flush();
bw.close();
}
}
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
자바 배열로 스택 구현해보기(백준 28278번 : 스택 2) (2) | 2023.12.07 |
---|---|
간단하지만 재미있는 약수의 성질(백준 13909번 : 창문닫기) (1) | 2023.12.05 |
[백준 알고리즘][자바] 1158번 : 요세푸스 문제 (0) | 2023.04.26 |
[백준 알고리즘][자바] 4673번 : 셀프넘버, 자릿수 판별하는 방법 (0) | 2023.04.24 |
[백준 알고리즘][자바] 2577번 : 숫자의 개수 (0) | 2023.04.24 |
댓글