니노니나니

[SWEA 1221] GNS - C++ 본문

알고리즘/삼성 Certi

[SWEA 1221] GNS - C++

SangJunni 2025. 2. 25. 22:35
 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

문제

숫자 체계가 우리와 다른 어느 행성이 있다. 아래는 이 행성에서 사용하는 0 ~ 9의 값을 순서대로 나타낸 것이다.
"ZRO", "ONE", "TWO", "THR", "FOR", "FIV", "SIX", "SVN", "EGT", "NIN"
0 ~ 9 의 값을 나타내는 단어가 섞여 있는 문자열을 받아 작은 수부터 차례로 정렬하여 출력하는 프로그램을 작성하라.
예를 들어 입력 문자열이 "TWO NIN TWO TWO FIV FOR" 일 경우 정렬한 문자열은 "TWO TWO TWO FOR FIV NIN" 이 된다.

입력

입력 파일의 첫 번째 줄에는 테스트 케이스의 개수가 주어진다.
그 다음 줄에 #기호와 함께 테스트 케이스의 번호가 주어지고 공백 문자 후 테스트 케이스의 길이가 주어진다.
테스트 케이스의 길이란, 문자열의 글자수가 아닌 단어의 갯수를 말한다.
그 다음 줄부터 바로 테스트 케이스가 주어진다. 단어와 단어 사이는 하나의 공백으로 구분하며, 문자열의 길이 N은 100≤N≤10000이다.

풀이

#include<iostream>
#include<string>
#include<unordered_map>
 
using namespace std;
 
int main(int argc, char** argv)
{
    int test_case;
    int T;
     
    //freopen("input.txt", "r", stdin);
    cin >> T;
    /*
       여러 개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
    */
    for (test_case = 1; test_case <= T; ++test_case)
    {
        unordered_map<string, int> hash = { {"ZRO",0}, {"ONE",1}, {"TWO",2}, {"THR",3}, {"FOR", 4}, {"FIV",5}, {"SIX",6}, {"SVN",7}, {"EGT",8}, {"NIN",9} };
        unordered_map<int, string> reversehash = { {0, "ZRO"}, {1, "ONE"}, {2, "TWO"}, {3, "THR"},{4, "FOR"}, {5, "FIV"}, {6, "SIX"}, {7, "SVN"},{8, "EGT"}, {9, "NIN"}};
        int counter[10] = { 0 };
        int _, data_length;
        cin >> _ >> data_length;
        string data;
        for (int i = 0; i < data_length; i++)
        {
            cin >> data;
            counter[hash[data]] += 1;
        }
        cout << "#" << test_case << endl;
        for (int i = 0; i < 10; i++)
        {
            for (int j = 0; j < counter[i]; j++)
            {
                cout << reversehash[i] << " ";
            }
        }
        cout << endl;
    }
    return 0;//정상종료시 반드시 0을 리턴해야합니다.
}

해결방법

문자열로 주어진 숫자를 정렬하는 문제. 쉽게 해결하는 방법은 각 숫자가 나온 횟수를 카운트하고 작은 숫자부터 출력하도록 코드를 작성하면 되는 문제.

'알고리즘 > 삼성 Certi' 카테고리의 다른 글

[SWEA 1267] 작업순서 - C++  (0) 2025.02.25
[SWEA 1265] 달란트2 - C++  (0) 2025.02.25
[SWEA 1215] 회문1 - C++  (0) 2025.02.25
[SWEA 1213] String - C++  (0) 2025.02.25
[SWEA 1220] Magnetic - C++  (0) 2025.02.24