문제 출처 : https://www.acmicpc.net/problem/1475
저는 이 문제를 풀기위해서 9라는 숫자를 배제하고 0~8까지의 숫자가 있다고 생각했습니다. input으로 9가 들어온다면 6으로 간주하여 접근하였으며, 전체적인 개수를 셀때는 6의 개수만 num/2 + num%2의 값으로 구했습니다.
#include <iostream>
#include <cstring>
using namespace std ;
int main(){
ios::sync_with_stdio(false) ;
cin.tie(NULL) ; cout.tie(NULL) ;
string N ;
int nums_cnt[9] = {0, } ;
cin >> N ;
for(auto n : N){
if (n == '9') n = '6';
nums_cnt[n-'0'] += 1;
}
nums_cnt[6] = nums_cnt[6]/2 + nums_cnt[6]%2 ;
int maximum = 0 ;
for(auto i : nums_cnt){
maximum = max(i, maximum) ;
}
cout << maximum << endl ;
return 0 ;
}
해당 문제는 Github에서도 보실 수 있습니다.
https://github.com/gurcks8989/CodingTest/blob/master/BackJoon/HPS/P1475_Room_Number.cpp
훈수 및 조언은 언제든 환영입니다.