문제링크: https://www.acmicpc.net/problem/1475
문제
다솜이는 은진이의 옆집에 이사왔다. 다솜이의 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다. 옆집에 플라스틱 상자를 파는데, 한 세트에 0~9까지의 숫자가 들어 있다. 다솜이의 방 번호가 주어졌을때, 필요한 세트의 개수의 값의 최솟값을 출력하라. (단, 9와 6은 뒤집어서 사용가능하다)
풀이
위의 문제 상황처럼, 다솜이의 방번호가 주어지면, 방번호를 만들기 위해 숫자세트를 몇개 구매해야하는지 최솟값을 출력하는 문제이다.
단 숫자세트 한 세트에서 [6]과 [9]는 같은 값이므로 한셋트에 2개가 포함이 된다는 점을 유의하자.
소스코드
package baekjoon.solution;
import java.util.Scanner;
public class Baekjoon_1475 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int inputNum = scan.nextInt();
int a = inputNum;
int[] platsticNumber = new int[10];
int cnt = 1;
int tmp = 0;
while (a / 10 != 0) {
a = a / 10;
cnt++;
}
for (int i = 0; i < cnt; i++) {
tmp = inputNum % 10;
inputNum = inputNum / 10;
if (tmp == 6)
platsticNumber[9]++;
else
platsticNumber[tmp]++;
}
int max = 0;
if(platsticNumber[9]%2==0)
platsticNumber[9] = platsticNumber[9]/2;
else
platsticNumber[9] = (platsticNumber[9]/2)+1;
for(int i=0;i<10;i++) {
max = Math.max(max, platsticNumber[i]);
}
System.out.println(max);
}
}
위와 같은 방법으로 풀었지만, 내가 봐도 좋은 코드는 아닌 것 같다.
일단 문제를 푼것에 의미를 두자