Deff_Dev

[백준] 1475번 방 번호 (C++) 본문

코딩테스트/백준

[백준] 1475번 방 번호 (C++)

Deff_a 2024. 12. 3. 01:41

https://www.acmicpc.net/problem/1475

문제 설명

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

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

입력

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

출력

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

 


풀이

입력된 roomNumber를 string으로 변환하여, 해당 문제를 풀이했다.

 

입력된 roomNumber의 각 번호 갯수를 구하고, 6과 9를 제외한 번호들 중 최댓값을 구한다.

이후, 전에 구한 최댓값과 숫자 6, 9를 더하고 2로 나눈 뒤 나머지 값을 더한 값 중 큰 값을 출력한다. 

#include <iostream>
#include <string>

using namespace std;

int main() {
	int roomNumber;
	int arr[10] = { 0, };

	cin >> roomNumber;

	string str = to_string(roomNumber);
	int maxNum = 0;
	for (int i = 0; i < str.length(); i++) {
		int n = str[i] - '0';
		if (++arr[n] > maxNum  && n != 6 && n != 9) {
			maxNum = arr[n];
		}
	}

	int a = arr[6] + arr[9];
	maxNum = max(maxNum, (a) / 2 + (a % 2 == 0 ? 0 : 1));
    
	cout << maxNum;
	return 0;
}