[백준] 12871 무한문자열
방법이 굉장히 다양할 수 있는 문제다.
나는 그냥 1. 길이가 같은가? ->
1-1. 같다면 두 문자열이 같은지 확인
1-2. 다르다면 두 수의 최소공배수의 길이가 될때까지 연장해보고 같은지 확인
이렇게 풀었다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class Main{
static int ip(String s){ return Integer.parseInt(s); };
static int lcm(int a, int b) {
int a1 = Math.max(a,b);
int b1 = Math.min(a,b);
while(b1 != 0){
int r = a1%b1;
a1 = b1;
b1 = r;
}
return (a*b)/a1;
}
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String a = br.readLine();
String b = br.readLine();
int alen = a.length();
int blen = b.length();
if(alen == blen) {
if(a.equals(b)) {
System.out.println(1); return;
}else {
System.out.println(0); return;
}
}
int lcm = lcm(alen, blen);
StringBuilder aa = new StringBuilder();
for(int i = 1 ; i <= lcm/alen ; i++) {
aa.append(a);
}
StringBuilder bb = new StringBuilder();
for(int i = 1 ; i <= lcm/blen ; i++) {
bb.append(b);
}
if(aa.toString().equals(bb.toString())) {
System.out.println(1); return;
}else {
System.out.println(0); return;
}
}
}
Comments