๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ฏ | ๋ฐฑ์ค€/๐Ÿ˜ | Gold

[Kotlin, G5] ๋ฐฑ์ค€ 1013๋ฒˆ Contact

by immgga 2024. 8. 7.

์ถœ์ฒ˜: 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