| 문제
다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
| 입력
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.
| 출력
첫째 줄에 필요한 세트의 개수를 출력한다.
| 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String N = br.readLine();
int[] arr = new int[9];
int max = 0;
for(int i=0; i<N.length(); i++) {
int num = N.charAt(i) - '0';
if(num == 9)
num = 6;
arr[num]++;
}
arr[6] = arr[6] % 2 ==0 ? arr[6] / 2 : (arr[6]/2)+1;
for (int j : arr) max = Math.max(max, j);
System.out.println(max);
}
}
| 풀이
int로 받지 않고 String으로 받아서 한 자리씩 확인한다.
9랑 6은 같이 사용할 수 있으니.. 9가 나왔을 경우에는 6으로 바꿔 카운팅 해준다.
그렇게 카운팅을 해주었으니 6을 카운팅한 수를 2로 나누어서 나머지가 0이면 몫을 가져가고, 0이 아니라면 +1을 해준다.
위 과정에 끝나면 배열 중 가장 큰 수(가장 많은 카운팅)를 찾아 출력해준다.