https://www.acmicpc.net/problem/12871
12871번: 무한 문자열
첫째 줄에 s, 둘째 줄에 t가 주어진다. 두 문자열 s와 t의 길이는 50보다 작거나 같은 자연수이고, 알파벳 소문자로만 이루어져 있다.
www.acmicpc.net
해석 및 팁
이 문제는 먼저 2개의 문자열을 입력받은 후 문자열 길이의 최소공배수를 구해줍니다. 그다음 문자열의 길이가 최소공배수의 길이가 될 때까지 반복해서 붙여줍니다. 그다음 2개의 문자열을 비교한 후 같으면 1, 다르면 0을 출력해 주면 되는 문제입니다.
Java 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
String t = sc.next();
String x = "";
String y = "";
int a = s.length();
int b = t.length();
int num = gcd(a, b);
int l = a * b / num;
for(int i = 0; i < l / a; i++) x += s;
for(int i = 0; i < l / b; i++) y += t;
if(x.equals(y)) System.out.println(1);
else System.out.println(0);
}
public static int gcd(int a, int b) {
if(b == 0) return a;
else return gcd(b, a % b);
}
}
'백준' 카테고리의 다른 글
백준 7576 토마토(Java) (0) | 2023.02.24 |
---|---|
백준 13335 트럭(Java) (1) | 2023.02.24 |
백준 24039 2021은 무엇이 특별할까(Java) (0) | 2023.02.23 |
백준 2531, 15961 회전초밥(Java) (0) | 2023.02.23 |
백준 3135 라디오(Java) (0) | 2023.02.23 |