14584 - 암호 해독

재찬·2023년 2월 22일
0

Algorithm

목록 보기
59/64
post-thumbnail

문제

코드

#include <bits/stdc++.h>
using namespace std;

int n;
string s;
string a[24];

int main(){
	cin >> s;
	cin >> n;
	for(int i = 0; i < n; i++){
		cin >> a[i];
	}
	
	for(int i = 0; i < 26; i++){
		for(int j = 0; j < n; j++){
			if(s.find(a[j]) != string::npos){
				cout << s << '\n';
				return 0;
			}
		}
		
		for(int j = 0; j < s.length(); j++){
			s[j] = (s[j] - 'a' + 1) % 26 + 'a';
		}		
	}
}

풀이

100 이하의 문자열, 길이가 20이하인 20개의 사전 단어 수 즉 다 해봐도 문제가 없다.
모든 데이터에 대해서 답이 한 가지인 경우만 들어오니까
사전의 단어를 암호문에서 다 검사해본다.
만약 암호문에 사전의 단어가 있다면 해당 암호문을 출력한다.
없으면 암호문을 전부 돌며 1씩 증가시켜준다.

결과

후기

이렇게 하는게 맞나? 라는 의심에 잘 풀지 못했던 문제다.
그냥 했으면 맞았는데 문제 풀 때 너무 신중하게 푸려다 보니 쫄아버린것 같다.
알파벳의 갯수만큼 반복문을 돌면 되는데 해당 숫자 설정을 잘못해서 2번 틀렸다.

0개의 댓글