반응형
문제 설명
다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
입력
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다.
출력
첫째 줄에 필요한 세트의 개수를 출력한다.
생각
0,1,2,3,4,5,6,7,8,9의 카드가 있다. 예를 들어 1~9까지는 1장만있는데 0만 3장이라면 카드는 3세트가 필요하다.
하지만 만약에 9가 4장이고 0,1,2,3,4,5,7,8 이 1장씩 필요하다고 하자. 이 경우에는 6과 9는 서로 쓸 수 있으므로 2세트만 있으면 된다. 하지만 5장이라면 3세트가 필요하게 된다. 따라서 6과 9를 합친 경우 홀수라면 (6과 9의 개수)/2 + 1을 해주면 된다.
배열을 만들고 방 번호를 10씩 나눠주면서 각 숫자에 맞는 인덱스의 값을 증가시켜준다. 여기서 6이나오면 9를 증가시켜줘서 6을 제외한 0~8까지의 최대값과 9가 필요한 최대값을 비교하여 카드 팩 수를 구한다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] n1 = new int[10];
int temp = n;
//10씩 나눠주면서 각 자리의 숫자에 맞는 인덱스의 값을 증가시켜준다.
//6이 나오면 9를 증가시켜준다.
while(temp!=0) {
int k = temp%10;
if(k==6 || k==9) {
n1[9]++;
} else {
n1[k]++;
}
temp /= 10;
}
//6을 제외한 0~8까지의 숫자의 최대값을 구하는 변수이다.
int max_to_eight = 0;
for(int i=0; i<n1.length-1; i++) {
if(max_to_eight <= n1[i]) {
max_to_eight = n1[i];
}
}
int six_or_nine = 0;
//9의 개수가 짝수일 때와 홀수일때를 나눠서 생각해준다.
if(n1[9]%2==0) {
six_or_nine = n1[9]/2;
} else {
six_or_nine = n1[9]/2 + 1;
}
//둘중의 최대값을 구한다. 여기서 나온 최대값이 필요한 최소 카드 팩의 수이다.
//만약 n=0이면, while문이 돌지 않고 넘어가므로 1이라고 예외 처리를 해준다.
int real_max = (int) Math.max(max_to_eight, six_or_nine);
if(n==0) real_max = 1;
System.out.println(real_max);
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
스캐너만 안썼으면 시간이 더 줄었을탠데..! 왜 이때 스캐너를 썼는지 모르겠다..
반응형
'알고리즘 > 코딩 - 백준' 카테고리의 다른 글
[Java][자바][백준][6593번] 상범 빌딩 (0) | 2019.08.25 |
---|---|
[Java][자바][백준][7562번] 나이트의 이동 (1) | 2019.08.24 |
[Java][자바][백준][2667번] 단지 번호 붙이기 (0) | 2019.08.22 |
[Java][자바][백준][1758번] 알바생 강호 (0) | 2019.08.21 |
[Java][백준][2468번] 안전 영역 (0) | 2019.08.04 |