※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 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

+ Recent posts