Algorithm/BOJ
[BOJ - Silver V] 무한 문자열 / ⭕
cks._.hong
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 문제임에도 불구하고 생각보다 고려해야 할 것이 많아 시간이 꽤 오래걸렸다.
- 최대한 반례를 생각하고 풀어보면 좋을 거 같다.