ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [BOJ - Silver V] 무한 문자열 / ⭕
    Algorithm/BOJ 2024. 8. 17. 12:01

    무한 문자열

     

    1. 제출 코드 (27분 55초 / 구현)

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class Main {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String s = br.readLine();
            String t = br.readLine();
            int answer = 1;
            String ts = s.concat(s);
            String tt = t.concat(t);
    
            if(ts.length() > tt.length()) {
                for(int i = 0; i < ts.length(); i++) {
                    if(ts.charAt(i) != tt.charAt(i % tt.length())){
                        answer = 0;
                        break;
                    }
                }
            } else {
                for(int i = 0; i < tt.length(); i++) {
                    if(tt.charAt(i) != ts.charAt(i % ts.length())){
                        answer = 0;
                        break;
                    }
                }
            }
            System.out.println(answer);
        }
    }

     

    2. 구현 로직

    문자열이 무한대로 이어지기 때문에 각 문자열당 한 번씩만 이어 붙이고 둘의 문자를 비교하면 정답을 추출할 수 있다고 생각했다.

    1. concat을 이용하여 각 문자열을 한 번씩 이어 붙인다.
    2. ts와 tt의 길이를 비교해서 긴 문자열을 기준으로 반복문을 수행한다.
    3. 짧은 길이의 문자열의 경우 최대 길이를 넘어간다면 % 연산자를 이용하여 처음부터 다시 비교하도록 했다.

    3. 유의할 점

    • 실버 5 문제임에도 불구하고 생각보다 고려해야 할 것이 많아 시간이 꽤 오래걸렸다.
    • 최대한 반례를 생각하고 풀어보면 좋을 거 같다.
Designed by Tistory.