Algorithm/Baekjoon

Baekjoon 1475 방 번호 JAVA

Hunveloper 2022. 4. 25. 17:31
728x90
 

1475번: 방 번호

첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

문제

다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.

다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)

입력

첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.

출력

첫째 줄에 필요한 세트의 개수를 출력한다.

풀이

6과 9만 따로 처리하면 된다.

1, 2, 3, 4, 5, 7, 8, 0 은 서로 갯수를 바꿀 수 없지만

6과 9의 경우 두개를 바꿔 사용할 수 있기에, 플라스틱 숫자 한 세트에 6이 2개 혹은 9를 2개라고 생각 할 수 있다.

총 필요한 6, 9의 갯수를 파악한 후 만약에 20개가 필요하다고 하면 5세트가 있으면 1*10, 2*10,,, (6과 9)*20 개로 만족할 수 있다.

코드
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String str=br.readLine();
		int [] a= new int[10];
		for(int i=0;i<str.length();i++) {
			if(str.charAt(i)=='6' || str.charAt(i)=='9')	// a가 6이랑 9이면 서로 보완 가능하므로 6인경우로 카운팅함
				a[6]++;
			else
				a[str.charAt(i)-'0']++;	// 나머지는 그 번호를 카운팅한다
		}
		a[6]=a[6]/2+a[6]%2;	// 6일때는 9일때와 동일하게 담겨있으므로 숫자 한 세트를 사면 6과 9는 상호 보완가능하기에 3개가 필요한 경우 2키트를 사면 6969 4개가 있기에 1개가 남게 구매 가능하다
		int ans=0;
		for(int i=0;i<10;i++)
			ans=Math.max(ans, a[i]);
		System.out.println(ans);
	}
}

 

728x90
728x90