[백준] 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;
         }
     }
}

Tags:

Categories:

Updated:

Comments