일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 코딩테스트실력진단
- 코드트리
- agcu컵
- 서울대학교
- 구름톤 챌린지
- 알고리즘
- 삼성전자
- 코딩테스트
- 인하대학교
- B형
- 알고리즘 특강
- 백준
- 2017
- 사내자격증
- certi
- 삼성전자 코딩테스트
- ICPC
- 프로그래밍 경시대회
- iucpc
- 파이썬
- 알고리즘특강
- 파일 생성 불가
- 코딩트리조별과제
- PRO
- 2023
- 구현
- 전국 대학생 프로그래밍 대회 동아리 연합
- 선린고등학교
- newbie programming contest
- Python
Archives
- Today
- Total
니노니나니
[SWEA 1221] GNS - C++ 본문
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 |