[백준] 1475번. 방 번호

연성·2020년 10월 14일
0

코딩테스트

목록 보기
73/261

[백준] 1475번. 방 번호

1. 문제

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

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

2. 입력

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

3. 출력

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

4. 풀이

  • 각 숫자가 몇 번 나온지 체크하고 그 중 가장 큰 수를 출력한다.
  • 6과 9는 서로 번갈아 쓸 수 있기 때문에 번갈아 쓰는 방법을 찾아야 한다.
  • 6과 9가 나온 횟수를 더 해서 반으로 나누어 각각 대입했다. 둘 중 한 곳에 나머지도 넣어주었다.

5. 처음 코드와 달라진 점

  • 99%에서 틀렸습니다가 떠서 화가 났다.
  • 방 번호가 0일 수도 있다는 사실을 그냥 확인 안 해주었다.
  • 0인 경우도 숫자 0을 썼기 때문에 maxValue가 0이면 1을 출력하도록 해주었다.

6. 코드

#include <iostream>
#include <algorithm>
using namespace std;


int main() {
	cin.tie(NULL);
	ios_base::sync_with_stdio(false);

	int arr[10] = { 0, };
	int n;
	cin >> n;

	while (n > 0) {
		arr[n % 10] ++;
		n /= 10;
	}

	int sixAndNine = arr[6] + arr[9];
	arr[6] = sixAndNine / 2;
	arr[9] = sixAndNine / 2 + sixAndNine % 2;

	int maxValue = arr[0];
	for (int i = 0; i < 10; i++){
		maxValue = max(maxValue, arr[i]);
	}
    
	if (maxValue == 0) maxValue = 1;
	cout << maxValue;
}

0개의 댓글