문제 링크
문제 해설
서로 다른 두 문자열을 각각 무한히 이어 붙였을 때 같은 문자열이 되는지 확인하려면 서로 같아질 때까지 계속 이어 붙여서 비교하는 방법이 있다. 문자열의 최대 길이가 50으로 매우 작기 때문에 이 방법으로 거뜬히 해결할 수 있다.
s = "abab", t = "ababab"인 경우를 예로 들 수 있다. 이 경우의 풀이 과정은 다음과 같아진다.
- s의 길이가 t보다 작으므로 s를 한번 이어 붙인다. → s' = "abababab", t = "ababab"
- t의 길이가 s'보다 작으므로 t를 한번 이어 붙인다. → s' = "abababab", t' = "abababababab"
- s'의 길이가 t'보다 작으므로 s'에 s를 한번 이어 붙인다. → s' = "abababababab", t' = "abababababab"
- s'와 t'의 길이가 같으므로 두 문자열을 비교한다.
Code
fun main() = with(System.`in`.bufferedReader()) {
val str1 = StringBuilder(readLine())
val str2 = StringBuilder(readLine())
val origin1 = str1.toString()
val origin2 = str2.toString()
while (str1.length != str2.length) {
if (str1.length > str2.length) str2.append(origin2)
if (str1.length < str2.length) str1.append(origin1)
}
println(if (str1.toString() == str2.toString()) 1 else 0)
}
'Algorithm > BOJ' 카테고리의 다른 글
[Kotlin] 백준 23757 : 아이들과 선물 상자 (0) | 2023.03.20 |
---|---|
[Kotlin] 백준 1599 : 민식어 (0) | 2023.03.18 |
[Kotlin] 백준 1354 : 무한 수열 2 (0) | 2023.03.11 |
[Kotlin] 백준 16499 : 동일한 단어 그룹화하기 (0) | 2023.03.10 |
[Kotlin] 백준 1715 : 카드 정렬하기 (0) | 2023.03.03 |
댓글