[BOJ 12871] 무한 문자열 (Java)

nnm·2020년 2월 17일
0

BOJ 12871 무한 문자열

문제풀이

쉬운 문제지만 오랜만에 최소공배수를 구하는 함수를 다시 구현해봤기에 포스팅한다.

  • 두 문자열의 길이가 같으면 바로 비교한다.
  • 두 문자열의 길이가 다르면 길이의 최소공배수를 구해서 두 문자열 모두 최소공배수만큼 문자열을 반복하여 늘린다.
  • 두 문자열을 비교한다.

구현코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	
	static String s, t;
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		s = br.readLine();
		t = br.readLine();
		int slen = s.length();
		int tlen = t.length();
		
		if(slen == tlen) {
			if(s.equals(t)) {
				System.out.println(1);
			} else {
				System.out.println(0);
			}
			return;
		}
		
		int lcm = lcm(slen, tlen);
		
		StringBuilder ss = new StringBuilder(s);
		StringBuilder tt = new StringBuilder(t);
		
		for(int i = 0 ; i < lcm / slen - 1 ; ++i) {
			ss.append(s);
		}
		
		for(int i = 0 ; i < lcm / tlen - 1 ; ++i) {
			tt.append(t);
		}
		
		if(ss.toString().equals(tt.toString())) {
			System.out.println(1);
		} else {
			System.out.println(0);
		}
	}
	
	private static int gcd(int a, int b) {
		if(b == 0) return a;
		
		return gcd(b, a % b);
	}
	
	private static int lcm(int a, int b) {
		return a * b / gcd(a, b);
	}
}
profile
그냥 개발자

0개의 댓글