※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 17176번 문제인 암호해독기이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/17176
17176번: 암호해독기
방금 도착한 암호문을 해독했는데, 해독에 오류가 없는지 확인해보려 한다. 해독한 문장이 암호문을 해석한 결과로 나올 수 없다면, 그 해독은 잘못된 것이다. 암호문은 0 이상 52 이하의 정수로
www.acmicpc.net
주어지는 암호문의 각 수를 대응되는 문자로 되돌려 각 문자별로 그 개수를 세고, 주어진 평문의 각 문자 또한 개수를 세어 각 문자별로 그 개수가 일치하는지를 확인하는 것으로 문제를 해결할 수 있다.
암호문의 각 수를 암호화되기 전 대응되는 문자로 되돌리는 것은 아스키코드의 계산을 통해 간편하게 구현할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
using namespace std;
int N;
int cnt[128];
string s;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N;
while (N--) {
int x; cin >> x;
if (x == 0) cnt[' ']++;
else if (1 <= x && x <= 26) cnt[x - 1 + 'A']++;
else cnt[x - 27 + 'a']++;
}
getline(cin, s); getline(cin, s);
for (auto& l : s) {
if (cnt[l]) cnt[l]--;
else {
cout << 'n';
return 0;
}
}
cout << 'y';
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 13213 // C++] Binary Roads (0) | 2023.06.05 |
---|---|
[BOJ 1788 // C++] 피보나치 수의 확장 (0) | 2023.06.04 |
[BOJ 13212 // C++] Random (0) | 2023.06.02 |
[BOJ 13211 // C++] Passport Checking (0) | 2023.06.01 |
[BOJ 13244 // C++] Tree (0) | 2023.05.31 |