[Algorithm/Java] 백준 14584번 - 암호 해독
https://www.acmicpc.net/problem/14584
🔍 문제 풀이
접근 방법
- num을 0부터 늘리며 str의 각 소문자를 시저 이동(
(ch-'a'+num)%26
)해 새 문자열sb
를 만든다. - 매 시프트마다
sb
안에 사전 단어 중 하나라도 포함되면 그sb
를 출력하고 종료한다.
💻 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int n = Integer.parseInt(br.readLine());
String[] arr = new String[n];
for (int i = 0; i < n; i++) {
arr[i] = br.readLine();
}
int num = 0;
while (true) {
StringBuilder sb = new StringBuilder();
for (int c = 0; c < str.length(); c++) {
char ch = str.charAt(c);
int digit = (ch - 'a' + num) % 26;
sb.append((char) (digit + 'a'));
}
for (int i = 0; i < n; i++) {
if (sb.toString().contains(arr[i])) {
System.out.println(sb);
return;
}
}
num++;
}
}
}
댓글남기기