728x90

문제

방에 주어진 방 번호에 맞게 번호표를 붙이려할 때 필요한 번호표 세트의 최소값을 구해야 한다.

 

하나의 번호표 세트에는 0부터 9까지 각 하나씩 번호표가 있고

6과 9는 뒤집으면 같은 경우니 같은 숫자라고 취급한다.

 

접근 방식

6과 9를 제외한 다른 값들은 세트 당 하나씩만 포함하니

여러개인 경우 그만큼 세트가 필요함

6과 9는 같은 숫자로 취급하여 2개 당 세트 하나로 처리 가능

 

6과 9를 제외한 각 숫자의 등장 빈도(max)와

6과 9의 등장 빈도를 합한 값(sixAndNine)을 구한다.

 

max * 2가 sixAndNine보다 작으면

필요한 세트의 기준이 6과 9의 등장 빈도가 되고

같거나 작다면 max가 기준이 된다.

 

풀이

public class Main {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);

		String roomNumber = scanner.nextInt() + "";

		int[] count = new int[10];
		int max = 0;
		int sixAndNine = 0;
		int result = 0;

		for (int i = 0; i < roomNumber.length(); i++) {
			count[roomNumber.charAt(i) - '0']++;
		}

		for (int i = 0; i < count.length; i++) {
			if (i == 6 || i == 9) {
				continue;
			}
			max = Math.max(max, count[i]);
		}

		sixAndNine = count[6] + count[9];

		if (max * 2 < sixAndNine) {
			result = (int) Math.ceil(sixAndNine / 2.0);
		} else {
			result = max;
		}

		System.out.println(result);
	}
}

'Java > Algorithms' 카테고리의 다른 글

[백준] 1406번 : 에디터  (0) 2023.09.29
[백준] 3273번 : 두 수의 합  (0) 2023.09.28
[백준] 2577번 : 숫자의 개수  (0) 2023.09.28
[배열] 두 수의 합이 100인 경우  (0) 2023.09.27
[백준] 2292번 : 벌집  (0) 2023.07.30

+ Recent posts