※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 14470번 방 번호이다.
문제는 아래 링크를 확인하자.

www.acmicpc.net/problem/1475

 

1475번: 방 번호

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

www.acmicpc.net

이 문제를 풀기 위해서, 먼저 주어진 자연수를 10진수로 표기할 때 0~9가 각각 몇 개씩 필요한지 조사한다.

그리고, 6과 9의 개수는 같이 조사한다.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <string>
#include <set>
using std::cin;
using std::cout;
using std::string;
using std::multiset;

int main()
{
    string n; // 자연수 n을 문자열로 읽어온다
    cin >> n;
    int nlen = n.length();
    multiset<int> ms;
    for (int i = 0;i < nlen;i++) {
        ms.insert(n[i]); // n의 각 자릿수를 multiset에 넣는다.
    }
    int mx = 0;
    for (int i = 48;i < 57;i++) { //48~57: 0~9의 ASCII 코드 번호, 9는 6에서 같이 세니 제외
        int cnt = ms.count(i);
        if (i == 54) { //6의 개수를 셀 때
            cnt += ms.count(57) + 1; //9의 개수를 같이 센다.
            cnt /= 2; //1을 더해 2로 나누면 필요한 세트의 개수를 알 수 있다.
        }
        if (cnt > mx) {//필요한 가장 많은 세트수를 구한다
            mx = cnt;
        }
    }
    cout << mx;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 1026 // C++] 보물  (0) 2021.01.04
[BOJ 1977 // C++] 완전제곱수  (0) 2021.01.03
[BOJ 10988 // C++] 팰린드롬인지 확인하기  (0) 2021.01.01
[BOJ 10808 // C++] 알파벳 개수  (0) 2020.12.31
[BOJ 2576 // C++] 홀수  (0) 2020.12.30

+ Recent posts