백준
백준 1475번 : 방 번호
Huiyeong
2021. 3. 6. 20:52
문제
1475번: 방 번호
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다.
www.acmicpc.net

구현 방법
수가 겹친다면 한 세트는 0~9까지 하나씩 밖에 없으므로 필요한 세트 개수의 최솟값은 0~9까지의 숫자 중 빈도수가 제일 높은 값입니다.
또한 6은 9로도 쓸 수 있고 9는 6으로도 쓸 수 있으므로 현재까지의 6, 9 개수 중 더 작은 값에 추가를 해주면 됩니다.
0~9까지 숫자가 몇 개가 있는지 체크할 수 있게 boolean 배열을 10크기만큼 생성해주었습니다.
숫자를 하나씩 보며 해당 숫자의 인덱스에 개수를 더해줍니다.
모든 수의 탐색이 끝나면 체크한 배열에서 가장 큰 값을 출력해줍니다.
구현 코드
package BOJ.Silver;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class B1475_방번호 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String N = br.readLine();
int[] numbers = new int[10];
for (int i=0;i<N.length();i++) {
char temp = N.charAt(i);
if (temp=='6' || temp=='9') { // 숫자가 6이나 9일 때
temp = numbers[6]<numbers[9]?'6':'9'; // 현재까지 6과 9의 개수를 비교해서 더 작은 값에 ++
}
numbers[temp-'0']++;
}
int MAX = Integer.MIN_VALUE;
for (int i=0;i<10;i++) {
MAX = Math.max(numbers[i], MAX);
}
System.out.println(MAX);
}
}
