문제 내용은 입력으로 0부터 1,000,000 까지 자연수를 받은 뒤 해당 자연수와 동일하게 만드려면 0~9가 들어있는 세트가 최소 몇 개가 필요한지 맞춰줘야 하는데, 6과 9는 동일하게 취급한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] split = br.readLine().split("");
TreeMap<Integer, Integer> map = new TreeMap<>();
for (int i = 0; i < split.length; i++) {
if (split[i].equals("9")) {
split[i] = "6";
}
map.put(Integer.parseInt(split[i]), map.getOrDefault(Integer.parseInt(split[i]), 0) + 1);
}
if (map.getOrDefault(6, 0) >= 2) {
map.put(6, (int) (Math.ceil(Double.valueOf(map.get(6)) / 2)));
}
System.out.println(Collections.max(map.values()));
}
}
일단 6이나 9 중 하나를 정해서 하나로 모두 합쳐준 뒤, 입력받은 값을 쪼갠 뒤 모두 Map 안에 넣어 갯수를 세 주면 되는데, 여기서 6 혹은 9의 경우에는 2개를 1개로 치기 때문에 /2를 하되, 3/2는 int면 1이 되기 때문에 반올림을 해주는 것을 잊지 말자.
이후 Map에 입력받은 자연수의 0~9별 모든 갯수를 넣어줬다면, Value 중 가장 큰 값만 반환하면 끝이다.
Leave a Reply