블로그 언저리인 무언가
[백준/BOJ] 14370 전화번호 수수께끼 (Large) 본문
728x90
문제 : 14370 전화번호 수수께끼 (Large)
전화번호의 각 자리를 영단어로 바꾸고
이를 뒤섞은 문자열이 주어졌을 때, 원래 전화번호를 알아내는 문제이다.
각 영어로 된 숫자들에서 유일한 문자를 가진 것들을 먼저 찾아내고
그 숫자를 제거했을 때 다시 유일한 문자들을
가진 숫자를 제거하는 식으로 진행하면
0-2-4-6-8-1-3-5-7-9 순서로 구하면 된다는 것을 알 수 있다.
Code
#include <bits/stdc++.h>
#define ll long long
using namespace std;
typedef pair<ll,char> plc;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
ll N;
cin >> N;
for (int i=1;i<=N;i++){
string S, ch[10]={"ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE"};
ll count[30]={0,};
ll arr[10]={0,};
plc turn[10]={{0,'Z'},{2,'W'},{4,'U'},{6,'X'},{8,'G'},
{1,'O'},{3,'H'},{5,'F'},{7,'S'},{9,'I'}};
cin >> S;
for (int j=0;j<S.size();j++){
count[S[j]-'A']++;
}
for (auto j: turn){
ll x=count[j.second-'A'];
arr[j.first]=x;
for (auto k:ch[j.first]){
count[k-'A']-=x;
}
}
cout << "Case #" << i << ": ";
for (int j=0;j<10;j++){
for (int k=0;k<arr[j];k++){
cout << j;
}
}
cout << "\n";
}
return 0;
}
728x90
'Programming > BOJ' 카테고리의 다른 글
[백준/BOJ] 2879 코딩은 예쁘게 (0) | 2020.09.28 |
---|---|
[백준/BOJ] 1577 도로의 개수 (0) | 2020.09.28 |
[백준/BOJ] 4388 받아올림 (0) | 2020.09.27 |
[백준/BOJ] 9370 미확인 도착지 (0) | 2020.09.26 |
[백준/BOJ] 1753 최단경로 (0) | 2020.09.26 |
Comments