12871번: 무한 문자열백준/문제2024. 3. 22. 11:19
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/12871
언어 : Kotlin
문제 설명 :
문자열 s가 있을 때, f(s)는 s를 무한번 붙인 문자열로 정의한다. 예를 들어, s = "abc" 인 경우에 f(s) = "abcabcabcabc..."가 된다.
다른 문자열 s와 t가 있을 때, f(s)와 f(t)가 같은 문자열인 경우가 있다. 예를 들어서, s = "abc", t = "abcabc"인 경우에 f(s)와 f(t)는 같은 문자열을 만든다.
s와 t가 주어졌을 때, f(s)와 f(t)가 같은 문자열을 만드는지 아닌지 구하는 프로그램을 작성하시오.
입력 :
첫째 줄에 s, 둘째 줄에 t가 주어진다. 두 문자열 s와 t의 길이는 50보다 작거나 같은 자연수이고, 알파벳 소문자로만 이루어져 있다.
출력 :
첫째 줄에 f(s)와 f(t)가 같으면 1을, 다르면 0을 출력한다.
제한 사항 :
- 시간 제한 : 2초
- 메모리 제한 : 512MB
입출력 예 :
입력 | 출력 |
ab abab |
1 |
abc bca |
0 |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val s = readLine()
val t = readLine()
val arr = IntArray(2) { 0 }.also {
it[0] = s.length
it[1] = t.length
}
val gcd = arr[0] * arr[1] / gcd(arr[0], arr[1])
val result = if (s.repeat(gcd / arr[0]) == t.repeat(gcd / arr[1])) "1" else "0"
bw.write(result)
bw.flush()
bw.close()
}
fun gcd(a: Int, b: Int): Int = if (b != 0) gcd(b, a % b) else a
'백준 > 문제' 카테고리의 다른 글
28074번: 모비스 (0) | 2024.03.22 |
---|---|
13420번: 사칙연산 (0) | 2024.03.22 |
20540번: 연길이의 이상형 (0) | 2024.03.21 |
10174번: 팰린드롬 (0) | 2024.03.21 |
11536번: 줄 세우기 (0) | 2024.03.21 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!