728x90
문제
방에 주어진 방 번호에 맞게 번호표를 붙이려할 때 필요한 번호표 세트의 최소값을 구해야 한다.
하나의 번호표 세트에는 0부터 9까지 각 하나씩 번호표가 있고
6과 9는 뒤집으면 같은 경우니 같은 숫자라고 취급한다.
접근 방식
6과 9를 제외한 다른 값들은 세트 당 하나씩만 포함하니
여러개인 경우 그만큼 세트가 필요함
6과 9는 같은 숫자로 취급하여 2개 당 세트 하나로 처리 가능
6과 9를 제외한 각 숫자의 등장 빈도(max)와
6과 9의 등장 빈도를 합한 값(sixAndNine)을 구한다.
max * 2가 sixAndNine보다 작으면
필요한 세트의 기준이 6과 9의 등장 빈도가 되고
같거나 작다면 max가 기준이 된다.
풀이
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String roomNumber = scanner.nextInt() + "";
int[] count = new int[10];
int max = 0;
int sixAndNine = 0;
int result = 0;
for (int i = 0; i < roomNumber.length(); i++) {
count[roomNumber.charAt(i) - '0']++;
}
for (int i = 0; i < count.length; i++) {
if (i == 6 || i == 9) {
continue;
}
max = Math.max(max, count[i]);
}
sixAndNine = count[6] + count[9];
if (max * 2 < sixAndNine) {
result = (int) Math.ceil(sixAndNine / 2.0);
} else {
result = max;
}
System.out.println(result);
}
}
'Java > Algorithms' 카테고리의 다른 글
[백준] 1406번 : 에디터 (0) | 2023.09.29 |
---|---|
[백준] 3273번 : 두 수의 합 (0) | 2023.09.28 |
[백준] 2577번 : 숫자의 개수 (0) | 2023.09.28 |
[배열] 두 수의 합이 100인 경우 (0) | 2023.09.27 |
[백준] 2292번 : 벌집 (0) | 2023.07.30 |