문제

방 번호 백준 1475 c++

"맞았습니다."코드

#include <bits/stdc++.h>
using namespace std;
​
int maxnum = 1; // 최소 세트 개수는 1개다. 
int N;
int arr[10]; // 0부터 9
​
void func(){
​
    cin >> N;
​
    while(N > 0){
        int target = N%10; // 자리수 1개 분리 하기 
        arr[target]++; // 자리수 개수 카운팅 
        N /= 10;
    }
​
    for(int i=0; i<=9; i++){
        if(i==6 || i==9) continue;
        maxnum = max(maxnum, arr[i]);
    }
    // (a[6]+a[9])/2를 올림한 값이
    // 6, 9에 대한 필요한 세트의 수이므로 (a[6]+a[9]+1)/2을 계산
    maxnum = max(maxnum, (arr[6]+ arr[9]+1) / 2);
​
    cout << maxnum;
}
​
​
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
​
    func();
    return 0;
}


리뷰

최소 세트 개수는 1개다.

6과 9는 서로 대신 쓸 수 있기 때문에. 마지막에 처리를 해준다.

 

(a[6]+a[9])/2 를 올림한 수가 6, 9에 대한 필요한 세트의 수다.

6이 2개, 9가 3개 필요한 경우, 올림한 3개의 세트가 필요하다.

 

6의 개수 9의 개수 필요한 세트 수 6와 9개수에 1을 더해서 세운 식
1개 1개 1개 (1+1 +1) / 2 = 1
2개 1개 2개 (2+1 +1) / 2 = 2
2개 2개 2개 (2+2 +1) / 2 = 2
2개 3개 3개 (2+3 +1) / 2 = 3

1212669 가 input으로 들어왔다고 하자.

6, 9를 제외한 다른 수를 확인했을 때 maxnum이 2 였다.

6은 2개, 9는 1개다. 6과 9만 생각하면 2세트가 있으면 된다.

maxnum = max(maxnum, (arr[6]+ arr[9]+1) / 2);

이렇게 maxnum과 비교하면 정답은 2가 된다.

728x90

'알고리즘 > 백준' 카테고리의 다른 글

strfry 백준 11328 c++  (0) 2021.11.22
두 수의 합 백준 3273번 c++  (0) 2021.11.22
알파벳 개수 백준 10808번  (0) 2021.11.21
숫자 백준 10093 c++  (0) 2021.11.20
일곱 난쟁이 백준 2309 c++  (0) 2021.11.20

+ Recent posts