ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C++] 백준 17828 문자열 화폐
    알고리즘/백준 2023. 8. 15. 16:26
    반응형
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    #include <iostream>
    #include <string>
     
    using namespace std;
     
    int n,x;
    string answer = "";
     
    void input() {
        cin >> n >> x;
    }
     
    void solve() {
        // 불가능한 경우 
        if(n * 26 < x || n * 1 > x) { cout << "!"return; }                                                
        
        int s = n;
        
        for(int i=0; i<s; i++) {
            int n_tmp = n-1;
            
            if(n_tmp * 26 >= x-1) {
                answer += "A";
                x -= 1;
            }
            else {
                int tmp = x - n_tmp * 26;
                char c = 'A' + (tmp-1);
                answer += c;
                x -= tmp;
            }
            n -= 1;
        }
        
        cout << answer;
    }
     
    int main() {
        input();
        solve();
        
    }
    cs

     

     

    문자열 + 그리디 문제

     

    N이 5,000,000 까지 가능하므로 O(n) 으로 처리하며 사전순으로 가장 앞서는 로직을 구현해야한다.

     

    제출 후 50%에서 출력 초과가 났을 경우 n = 1, x = 100 의 반례를 생각해보자

     

    728x90
    반응형

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

    [백준] 21275 폰 호석만 C++  (0) 2023.08.10
    [C++] 백준 16981 봄버맨  (0) 2023.01.22
    [C++] 백준 1238 파티  (0) 2023.01.21
    [C++] 백준 10431 줄세우기  (0) 2023.01.19
    [C++] 백준 4659 비밀번호 발음하기  (0) 2023.01.17

    댓글

Designed by Tistory.