https://www.acmicpc.net/problem/1475
다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.
// 방번호
#include <iostream>
using namespace std;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
//ans = 1로 둠으로서 n = 0일때에 대한 예외처리가 자연스럽게 가능해짐
int n, arr[10] = {}, ans = 1;
cin >> n;
//자리수 추출
while (n > 0) {
arr[n % 10]++;
n /= 10;
}
//최대값 추출
//6과 9는 한 숫자로 봐야하기 때문에 우선 넘긴다.
for (int i = 0; i < 10; i++) {
if (i == 6 || i == 9) {
continue;
}
ans = max(ans, arr[i]);
}
//(arr[6] + arr[9]) / 2)를 올림으로 처리해야하므로 (arr[6] + arr[9] + 1) / 2)
ans = max(ans, (arr[6] + arr[9] + 1) / 2);
cout << ans;
}
'N = 0'일때도 1세트는 필요하므로 ans=1을 설정해서 대비한다.
6과 9는 한 숫자로 봐야한다.
(arr[6] + arr[9]) / 2)를 올림으로 처리해야하므로 (arr[6] + arr[9] + 1) / 2)로 작성.