반응형
https://www.acmicpc.net/problem/17176
구현 후 정렬비교로 푼 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
복호화된 문자열을 저장할 decodedCryptogram, 평문 origin, 암호를 저장할 배열 cryptogramVector를 선언한 후 적절히 입력받습니다.
📔 풀이과정
1. 아스키 코드표를 참조해 cryptogramVector에서 하나씩 원소를 확인한 후 복호화해 decodedCryptogram에 저장합니다.2. 암호문의 문자는 무작위로 배치되므로 origin, decodedCryptogram을 오름차순으로 정렬해줍니다. n이 10만이므로 O(nlogn)의 복잡도를 가진 정렬을 수행해야합니다.
📔 정답출력
origin과 decodedCryptogram이 같으면 'y' 다르면 'n'을 출력합니다.
📕 Code
#include <bits/stdc++.h>
using namespace std;
string decodedCryptogram, origin;
vector <int> cryptogramVector;
int n;
void decodeCryptogram(){
for(auto c : cryptogramVector){
if(c == 0) decodedCryptogram += " ";
else if(1 <= c && c <= 26) {
decodedCryptogram += (c - 1) + 'A';
}
else if(27 <= c && c <= 52) {
decodedCryptogram += (c - 27) + 'a';
}
}
}
int main(){
cin >> n;
cryptogramVector.resize(n);
for(int i = 0; i < n; i++) cin >> cryptogramVector[i];
cin.ignore();
getline(cin, origin);
decodeCryptogram();
sort(decodedCryptogram.begin(), decodedCryptogram.end());
sort(origin.begin(), origin.end());
if(decodedCryptogram == origin) cout << 'y';
else cout << 'n';
}
'Algorithm > Sorting' 카테고리의 다른 글
(C++) - LeetCode (easy) 976. Largest Perimeter Triangle (0) | 2022.10.12 |
---|---|
(C++) - 백준(BOJ) 14592 : 2017 아주대학교 프로그래밍 경시대회 (Small) (0) | 2022.08.31 |
(C++) - 백준(BOJ) 14729 : 칠무해 (5) | 2022.04.19 |
(C++) - 백준(BOJ) 16212 : 정열적인 정렬 (1) | 2022.04.11 |
(C++) - 백준(BOJ) 13580 : Andando no tempo (0) | 2021.11.21 |