최대 1 분 소요



https://www.acmicpc.net/problem/14584



🔍 문제 풀이

접근 방법

  1. num을 0부터 늘리며 str의 각 소문자를 시저 이동((ch-'a'+num)%26)해 새 문자열 sb를 만든다.
  2. 매 시프트마다 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++;
        }
    }
}


카테고리:

업데이트:

댓글남기기