‡ CODING TEST STUDY ‡/º 백준
[백준 | Java Silver V] (#1475) 방 번호
Trudy | 송연
2024. 7. 25. 20:43
문제
https://www.acmicpc.net/problem/1475
접근
0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
0~9까지 숫자 세트가 있고, 6,9는 뒤집어서 이용할 수 있다. 즉, 같은 거로 간주하면 된다.
0~9까지의 숫자 개수를 Map 형태로 저장하고, 6과 9는 같은 거로 간주해서 반으로 나눠주어서 총 개수 중 가장 큰 것을 출력하면 된다.
최종 코드
package week12.baek.july26.baek;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
public class S1475 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String n = br.readLine();
Map<Integer, Integer> map = new HashMap<>();
// 각 숫자의 개수를 센다
for (int i = 0; i < n.length(); i++) {
int digit = n.charAt(i) - '0';
map.put(digit, map.getOrDefault(digit, 0) + 1);
}
// 6과 9의 개수를 더하고, 반으로 나눈 뒤 올림
int count6 = map.getOrDefault(6, 0);
int count9 = map.getOrDefault(9, 0);
int count69 = (count6 + count9 + 1) / 2; // 올림 계산
// 최대 값을 찾기
int max = count69;
for (int i = 0; i <= 9; i++) {
if (i == 6 || i == 9) continue;
max = Math.max(max, map.getOrDefault(i, 0));
}
System.out.println(max);
}
}