GW LABS

[Backjoon] 숫자놀이 본문

Algorithm & DataStructure

[Backjoon] 숫자놀이

GeonWoo Kim 2022. 2. 8. 18:20

백준 1755번 숫자놀이는 요건에 따라 Map을 정렬하면 쉽게 풀 수 있는 문제였다. C++의 경우 맵을 정렬하는 API가 없기 때문에 Vector 타입으로 변경하여 해결해야 한다. 아래는 풀이 소스이다. 정렬 함수는 C++의 람다 함수를 통해서 구현했다. 

 

#include <iostream>
#include <map>
#include <vector>
#include <algorithm>

using namespace std;

map<int, string> numberMap = {
    {0, "zero"}, {1, "one"}, {2, "two"}, {3, "three"},
    {4, "four"}, {5, "five"}, {6, "six"}, {7, "seven"},
    {8, "eight"}, {9, "nine"}
};

int main() {

    int m, n;
    cin >> m >> n;

    map<int, string> container;
    for (int i = m; i <= n; ++i) {
        string target = "";
        int first = i / 10;
        int second = i % 10;
        
        if (first != 0) {
            target += numberMap[first] + " ";
        }
        target += numberMap[second];

        container[i] = target;
    }

    vector<pair<int, string>> vec(container.begin(), container.end());
    sort(vec.begin(), vec.end(), [](const pair<int, string>& a, const pair<int, string>& b){
        if (a.second == b.second) return a.first < b.first;
        return a.second < b.second;
    });

    int counter = 0;
    for (auto pair : vec) {
        cout << pair.first << " ";
        counter++;
        if (counter % 10 == 0) cout << "\n";
    }

    return 0;
}

'Algorithm &amp; DataStructure' 카테고리의 다른 글

[Backjoon] 촌수계산  (0) 2021.02.28
[Backjoon] 소수&팰린드롬  (0) 2021.01.12
[Backjoon] 트럭 주차  (0) 2021.01.02
[Backjoon] 회전하는 큐  (0) 2020.12.18
[Backjoon] 통나무 건너뛰기  (0) 2020.12.13
Comments