2020-08-30
문제
다솜이는 은진이의 옆집에 새로 이사왔다.
다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다.
한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다.
다솜이의 방 번호가 주어졌을 때,
필요한 세트의 개수의 최솟값을 출력하시오.
(6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
입력
첫째 줄에 다솜이의 방 번호 N이 주어진다.
N은 1,000,000보다 작거나 같은 자연수 또는 0이다.
출력
첫째 줄에 필요한 세트의 개수를 출력한다.
소스코드
Scanner scan = new Scanner(System.in);
String n = scan.next();
int Nsize = n.length();
int[] needSet = new int[10];
int temp = 0;
int max = 0;
//counting 배열을 사용하였다.
for (int i = 0; i < Nsize; i++) {
temp = n.charAt(i) - '0';
needSet[temp]++;
//입력된 숫자가 있는 곳에 ++연산 수행
}
//6,9를 바꿔서 사용할 수 있다.
int k = (needSet[6] + needSet[9]);
//6,9의 합이 짝수이면 반으로 나누면 된다.
if (k % 2 == 0) {
needSet[6] = k / 2;
needSet[9] = k / 2;
}
else {
needSet[6] = k / 2 + 1;
needSet[9] = k / 2 + 1;
}
//6,9의 합이 홀수이면 반으로 나눠도 1번 더 사용할 수 있기 때문에 1을 더해준다.
//ex) 9676
for (int i : needSet) {
max = Math.max(max, i);
}
System.out.println(max);
//가장 많은 번호가 있는 배열의 위치를 찾는다.
//세트당 번호는 하나이기 때문이다.
출처 링크 : www.acmicpc.net/problem/1475