No Rules Rules

숫자의 신 (feat. 백준, 1422번) 본문

생활/코테

숫자의 신 (feat. 백준, 1422번)

개발하는 완두콩 2022. 9. 20. 18:30
728x90
반응형

숫자의 신
https://www.acmicpc.net/problem/1422

 

1422번: 숫자의 신

첫째 줄에 K와 N이 공백을 사이에 두고 주어진다. K와 N은 각각 50보다 작거나 같은 자연수이고, N은 K보다 크거나 같다. 둘째 줄에는 K개의 수가 한 줄에 하나씩 주어진다. 각 수는 1,000,000,000보다

www.acmicpc.net

 

반응형

 

// woohyeon.kim
// kim519620.tistory.com
#include <iostream>
#include <cstring>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std;
struct cmp1{
    bool operator()(const string& v1, const string& v2){
        if(v1.size() == v2.size()){
            return v1 < v2;
        }
        return v1.size() < v2.size();
    }
};
struct cmp2{
    bool operator()(const string& v1, const string& v2){
        return v1 + v2 < v2 + v1;
    }
};
int main(){
    ios::sync_with_stdio(false), cin.tie(NULL);
    register int K, N;
    string tmp;
    cin >> K >> N;
    priority_queue<string, vector<string>, cmp1> q;
    priority_queue<string, vector<string>, cmp2> ans;
    for(register int k = 0; k < K; ++k)
        cin >> tmp, q.push(tmp);
    for(register int n = K; n < N; ++n)
        q.push(q.top());
    while(!q.empty())
        ans.push(q.top()), q.pop();
    tmp.clear();
    while(!ans.empty())
        tmp += ans.top(), ans.pop();
    cout << tmp;
    return 0;
}
// *&)*@*

 

  1. 상당히 어려웠습니다. 반나절은 걸린것 같습니다.
  2. 입력받은 자연수는 길이가 길고 사전상 앞순이어야 더 큰값입니다. 따라서 해당 조건에 따라 정렬될 수 있어야 합니다.
  3. N개의 자연수는 N0+N1 > N1+N0 순서대로 정렬되어야 합니다. 두 자연수가 합쳐졌을때 더 큰 조건일수록 우선순위가 높아야 합니다.
  4. 위 조건들로 정렬된 자연수들을 쭉 나열하면 정답이 됩니다.
728x90
반응형

'생활 > 코테' 카테고리의 다른 글

뱀 (feat. 백준, 3190번)  (0) 2022.09.21
에디터 (feat. 백준, 1406번)  (0) 2022.09.20
연료 채우기 (feat. 백준, 1826번)  (0) 2022.09.20
책 나눠주기 (feat. 백준, 9576번)  (0) 2022.09.20
보석 도둑 (feat. 백준, 1202번)  (0) 2022.09.20
Comments