-
[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. 구현 로직
문자열이 무한대로 이어지기 때문에 각 문자열당 한 번씩만 이어 붙이고 둘의 문자를 비교하면 정답을 추출할 수 있다고 생각했다.
- concat을 이용하여 각 문자열을 한 번씩 이어 붙인다.
- ts와 tt의 길이를 비교해서 긴 문자열을 기준으로 반복문을 수행한다.
- 짧은 길이의 문자열의 경우 최대 길이를 넘어간다면 % 연산자를 이용하여 처음부터 다시 비교하도록 했다.
3. 유의할 점
- 실버 5 문제임에도 불구하고 생각보다 고려해야 할 것이 많아 시간이 꽤 오래걸렸다.
- 최대한 반례를 생각하고 풀어보면 좋을 거 같다.
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ - Gold IV] 녹색 옷 입은 애가 젤다지? / ⭕ (0) 2024.08.19 [BOJ - Gold IV] 운동 / ⭕ (0) 2024.08.19 [BOJ - Gold IV] 곡예 비행 / ⭕ (0) 2024.08.18 [BOJ - Gold V] 토마토 / ⭕ (0) 2024.08.17 [BOJ - Silver IV] 오셀로 재배치 / ⭕ (0) 2024.08.17