문자열 a와 b를 무한히 늘렸을때 두 문자열은 같은지를 묻는 문제이다
a길이와 b길이의 최소공배수를 구하고 그 길이가 될때까지 각각 자기복제를 하여 새로 만든 두 문자열이
같은지를 비교하면 되는 문제이다
https://www.acmicpc.net/problem/12871
#include <bits/stdc++.h>
using namespace std;
int gcd(int x, int y){
int z;
while(y!=0){
z=x%y;
x=y;
y=z;
}
return x;
}
int lcm(int x, int y){
return x*y/gcd(x, y);
}
int main(){
string a, b;
cin >> a >> b;
string atm=a;
string btm=b;
int al=a.length();
int bl=b.length();
int ablcm=lcm(al, bl);
if(a==b){
cout << 1 << "\n";
return 0;
}
while(al!=ablcm){
atm+=a;
al+=a.length();
}
while(bl!=ablcm){
btm+=b;
bl+=b.length();
}
if(atm==btm){
cout << 1 << "\n";
} else {
cout << 0 << "\n";
}
return 0;
}
'개발 노트 > 백준, 프로그래머스 풀이' 카테고리의 다른 글
[백준 1764/c++] 듣보잡 (0) | 2022.07.05 |
---|---|
[백준 11729/c++] 하노이의 탑 이동 순서 (0) | 2022.07.03 |
[백준 1181/c++] 단어 정렬 (0) | 2022.07.01 |
[백준 10610/c++] 30 (0) | 2022.07.01 |
[백준 2477/c++] 참외밭 (0) | 2022.07.01 |
댓글