문제 출처 - Baekjoon Online Judge
문제는 여기
[문제]
다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
[입력]
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.
[출력]
첫째 줄에 필요한 세트의 개수를 출력한다.
[풀이]
1. 값들을 입력받아준다.
2. 각 자릿수를 나눠서 각 숫자의 갯수를 구해준다.
3. 6과 9는 같이 사용할 수 있으므로 둘의 평균 개수를 구해준다.
4. 모든 숫자의 개수중 최고 개수를 구해준다.
5. 4. 에서 구한 결과를 출력한다.
[접근]
1. 6과 9는 합쳐서 구해주고 2로 나눠서 평균값을 구해 사용하고 나머지 숫자들은 개별 개수를 구해서 최대 개수를 구하면 된다고 생각했다.
[코드]
import java.io.*;
public class Main {
static int n;
static int arr[];
static int max;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
arr = new int[9];
// 각 자리수로 나눠서
// 어떤 숫자를 사용해야하는지 구하기
while (n > 0) {
int i = n % 10;
if (i != 9)
arr[i]++;
else
arr[6]++;
n /= 10;
}
// 6과 9를 사용할 수 있으니까 반으로 처리하는데
// 나머지가 있으면 1증가 아니면 0증가
arr[6] = arr[6] % 2 == 0 ? arr[6] / 2 : (arr[6] + 1) / 2;
// 최대 갯수를 구하기
for (int i = 0; i < 9; i++) {
max = Math.max(max, arr[i]);
}
System.out.println(max);
}
}
'문제 풀이 > Baekjoon' 카테고리의 다른 글
[백준] S5 10826번 피보나치 수 4 (JAVA) (0) | 2022.06.13 |
---|---|
[백준] S3 9711번 피보나치 (JAVA) (0) | 2022.06.12 |
[백준] G5 13549번 숨바꼭질 3 (JAVA) (0) | 2022.06.09 |
[백준] G4 14002번 가장 긴 증가하는 부분 수열 4 (0) | 2022.06.08 |
[백준] S2 1965번 상자넣기 (JAVA) (0) | 2022.06.07 |