문제
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);
}
}
'백준' 카테고리의 다른 글
백준 1205번 : 등수 구하기 (0) | 2021.03.07 |
---|---|
백준 1476번 : 날짜 계산 (0) | 2021.03.06 |
백준 1292번 : 쉽게 푸는 문제 (0) | 2021.03.06 |
백준 14503번 : 로봇 청소기 (0) | 2021.03.06 |
백준 4948번 : 베르트랑 공준 (0) | 2021.03.06 |