πŸ’― | λ°±μ€€/😐 | Gold

[Kotlin, G5] λ°±μ€€ 1013번 Contact

immgga 2024. 8. 7. 12:05
λ°˜μ‘ν˜•

좜처: unsplash.com

 

Contact(1013번)

Gold 5

#λ¬Έμžμ—΄ #μ •κ·œ ν‘œν˜„μ‹

https://www.acmicpc.net/problem/1013

 

문제 λ‚΄μš©

 

 

문제 μ ‘κ·Ό

μž…λ ₯받은 숫자 μ½”λ“œκ°€ (100+1+ | 01)+ 을 λ§Œμ‘±ν•˜λŠ”μ§€ 확인해야 ν•œλ‹€.

μœ„μ˜ μ˜ˆμ‹œμ—μ„œ λ΄€λ‹€μ‹œν”Ό, +κΈ°ν˜ΈλŠ” νŠΉμ • λ¬Έμžκ°€ λ°˜λ³΅ν•΄μ„œ λ‚˜μ˜€λŠ” 것을 λœ»ν•œλ‹€.

100+의 κ²½μš°μ—λŠ” 100, 10000, 1000000... 와 같은 μˆ«μžλ“€μ΄ 100+ λ₯Ό λ§Œμ‘±ν•œλ‹€.

(01)+의 κ²½μš°μ—λŠ” κ΄„ν˜Έ μ•ˆμ˜ μˆ«μžλ“€μ΄ λ°˜λ³΅λΌμ„œ λ‚˜μ˜€λŠ” 것을 λœ»ν•œλ‹€.

01, 0101, 010101... 와 같은 μˆ«μžλ“€μ΄ (01)+ 을 λ§Œμ‘±ν•œλ‹€.

 

μš°λ¦¬κ°€ 확인해야 ν•  νŒ¨ν„΄μ€ (100+1+ | 01)+은

1. 10 λ‹€μŒμ— 0이 λ°˜λ³΅λœλ‹€. 그리고 반볡이 λλ‚˜λ©΄ 1이 λ°˜λ³΅λœλ‹€.

2. 01둜 λλ‚œλ‹€.

νŒ¨ν„΄ 1 λ˜λŠ” 2κ°€ 반볡적으둜 λ“±μž₯ν•œλ‹€.

 

μœ„ 쑰건을 μ •κ·œ ν‘œν˜„μ‹μœΌλ‘œ λ‚˜νƒ€λ‚΄λŠ” 것은 쉽닀.

Kotlin의 μ •κ·œ ν‘œν˜„μ‹μ˜ + κΈ°ν˜Έκ°€ λ¬Έμ œμ™€ 같은 역할을 ν•œλ‹€(1번 이상 반볡).

μ •κ·œ ν‘œν˜„μ‹μ€ λ‹€μŒκ³Ό 같이 λ§Œλ“€ 수 μžˆλ‹€.

val regex = Regex("(100+1+|01)+")

 

 

문제 ν•΄κ²° μ½”λ“œ

더보기
import java.io.BufferedReader
import java.io.InputStreamReader

fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
    val case = readLine().toInt()
    val regex = Regex("(100+1+|01)+")

    for (i in 0 until case ) {
        val code = readLine()

        if (regex.matches(code)) println("YES")
        else println("NO")
    }
}

 

문제 풀이

μœ„μ˜ 쑰건 2개λ₯Ό λ§Œμ‘±ν•  수 μžˆλŠ” μ •κ·œ ν‘œν˜„μ‹μ„ κ΅¬μ„±ν•˜κ³ 

μž…λ ₯된 μ½”λ“œκ°€ μ •κ·œ ν‘œν˜„μ‹μ— λ§€μΉ˜λ˜λŠ”μ§€ ν™•μΈν•œλ‹€.

 

 

문제 ν•΄κ²° κ³Όμ •

μ •κ·œ ν‘œν˜„μ‹μ„ λ¬Έμ œμ—μ„œ λŒ€λ†“κ³  μ•Œλ €μ€˜μ„œ μ‰½κ²Œ ν•΄κ²°ν–ˆλ‹€.

μ •κ·œ ν‘œν˜„μ‹μ„ μ“΄λ‹€λ©΄ λΈŒλ‘ μ¦ˆκΈ‰μ˜ λ¬Έμ œκ°€ λ˜μ§€λ§Œ, μ“°μ§€ μ•ŠλŠ”λ‹€λ©΄ κ³¨λ“œμ˜ λ‚œμ΄λ„λ₯Ό λ§›λ³Ό 수 μžˆμ„ 것이닀.

728x90
λ°˜μ‘ν˜•