๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ฏ | ๋ฐฑ์ค€/๐Ÿ™‚ | Silver

[Kotlin, S2] ๋ฐฑ์ค€ 2716๋ฒˆ ์›์ˆญ์ด ๋งค๋‹ฌ๊ธฐ

by immgga 2024. 8. 25.

์ถœ์ฒ˜: unsplash.com

 

์›์ˆญ์ด ๋งค๋‹ฌ๊ธฐ(2716๋ฒˆ)

Silver 2

#์ž๋ฃŒ ๊ตฌ์กฐ #ํŠธ๋ฆฌ #์Šคํƒ

 

๋ฌธ์ œ ๋‚ด์šฉ

 

 

๋ฌธ์ œ ์ ‘๊ทผ

์ž…๋ ฅ์€ ์˜ค์ง ๋Œ€๊ด„ํ˜ธ๋งŒ ์ฃผ์–ด์ง„๋‹ค. ๋Œ€๊ด„ํ˜ธ๊ฐ€ ์žˆ์œผ๋ฉด ๋ฉ๊ตด์ด 2๊ฐœ๋กœ ๋ถ„๋ฆฌ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ฐ ๋ฉ๊ตด์—๋Š” ๋™์ผํ•œ ์ˆ˜์˜ ์›์ˆญ์ด๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

๋ฉ๊ตด์€ 2๊ฐœ๋กœ๋งŒ ๋‚˜๋ˆ„์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

์œ„ ๋ฌธ์ œ์˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ๊ฐ ๋ฉ๊ตด ์ˆ˜์— ๋งž๋Š” ์›์ˆญ์ด๋“ค์ด ๋งค๋‹ฌ๋ ค ์žˆ๋‹ค.

์‚ฌ์ง„ 1-1

 

์ฒซ ๋ฒˆ์งธ ๋ฉ๊ตด์˜ ์›์ˆญ์ด ์ˆ˜๋Š” ๊ฐ ๋ฉ๊ตด์— 4๋งˆ๋ฆฌ์”ฉ์ด๋‹ค(2+ 2, 1 + 1 + 2).

์˜ค๋ฅธ์ชฝ์˜ ๋ฉ๊ตด์˜ ์›์ˆญ์ด ์ˆ˜๋Š” ๊ฐ ๋ฉ๊ตด์— 2๋งˆ๋ฆฌ์”ฉ์ด๋‹ค(1 + 1, 2).

๊ฐ ๋ฉ๊ตด์˜ depth๊ฐ€ ๊นŠ์–ด์งˆ์ˆ˜๋ก ํ•„์š”ํ•œ ์›์ˆญ์ด์˜ ์ˆ˜๊ฐ€ 2๋ฐฐ์”ฉ ๋Š˜์–ด๋‚˜๊ฒŒ ๋œ๋‹ค.

 

๋ฉ๊ตด์€ ๋ฌด์กฐ๊ฑด 2๊ฐœ์”ฉ์œผ๋กœ๋งŒ ๋‚˜๋ˆ„์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋ฉ๊ตด์˜ depth๊ฐ€ ๊นŠ์–ด์งˆ์ˆ˜๋ก ๋‹ค๋ฅธ ๋ฉ๊ตด๋„ ๊นŠ์–ด์ง„ ๋ฉ๊ตด์˜ depth์— ๋”ฐ๋ผ ๋Š˜์–ด๋‚œ ์›์ˆญ์ด ์ˆ˜์— ๋งž๊ฒŒ ์›์ˆญ์ด๋ฅผ ์ถ”๊ฐ€ํ•ด ์ค˜์•ผ ํ•œ๋‹ค.

์‚ฌ์ง„ 1-1์—์„œ๋Š” ์ตœ๋Œ€ ๊นŠ์ด๊ฐ€ 3์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•„์š”ํ•œ ์›์ˆญ์ด์˜ ์ˆ˜๊ฐ€ 8๋งˆ๋ฆฌ์ด๋ฏ€๋กœ, ์ฐจ์ˆ˜๋ฅผ depth๋กœ ํ•˜๋Š” 2์˜ ์ œ๊ณฑ์ˆ˜๋ฅผ ๊ตฌํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

์ด์ œ 2์˜ depth์Šน์„ ๊ตฌํ•ด์•ผ ํ•˜๋Š” ์‚ฌ์‹ค์€ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์–ด๋–ป๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ์„๊นŒ?

ํŠธ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ตณ์ด ๊ทธ๋ ‡๊ฒŒ ๊ตฌํ•  ํ•„์š”๋Š” ์—†์„ ๊ฒƒ ๊ฐ™๋‹ค. ํŠธ๋ฆฌ๋ฅผ ๋‹ค๋ฃฐ ์ค„ ์•Œ๋ฉด ์ง€๊ธˆ ๋ฐ”๋กœ ํŠธ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ž.

ํŠธ๋ฆฌ๋ฅผ ๋ชจ๋ฅด๋Š” ์šฐ๋ฆฌ๋Š” ๋Œ€๊ด„ํ˜ธ์˜ ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ ๊นŠ์ด๋ฅผ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋Œ€๊ด„ํ˜ธ ์—ฌ๋Š” ๋ถ€๋ถ„(' [ ')์ด ๋“ค์–ด์˜ค๋ฉด ๊นŠ์ด๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ , ์•„๋‹Œ ๊ฒฝ์šฐ์—๋Š” ๊นŠ์ด๋ฅผ ์ค„์—ฌ ์ฃผ๋ฉด ๋œ๋‹ค.

์‚ฌ์ง„ 1-2

๋ฉ๊ตด์˜ ๊ตฌ์กฐ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊นŠ์ด๋ฅผ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ„ ํ‘œ๋ฅผ ๋ณด๋ฉด ๊ฐ€์žฅ ๊นŠ์„ ๋•Œ์˜ ๊นŠ์ด๊ฐ€ 3์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ฐ”๋กœ 2์˜ 3์Šน์œผ๋กœ ์ •๋‹ต์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐ”๋กœ ์ฝ”๋“œ๋กœ ๋‚˜ํƒ€๋‚ด ๋ณด์ž.

 

<์กฐ๊ฑด 1>

tree์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Š” ๋Œ€๊ด„ํ˜ธ๋ฉด ๊นŠ์ด๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ , ์•„๋‹ˆ๋ฉด ๊นŠ์ด๋ฅผ ๊ฐ์†Œ์‹œํ‚จ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ ๊นŠ์ด์™€ ์ธก์ •๋œ ์ตœ๋Œ€ ๊นŠ์ด ์ค‘ ๋” ํฐ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.

for (t in tree) {
    if (t == '[') current++
    else current--

    deep = max(deep, current)
}

deep์ด ์ธก์ •๋œ ์ตœ๋Œ€ ๊นŠ์ด์ด๊ณ , current๊ฐ€ ํ˜„์žฌ ๊นŠ์ด์ด๋‹ค.

current๊ฐ€ deep๋ณด๋‹ค ํฌ๋ฉด deep์ด current๋กœ ๊ฐฑ์‹ ๋˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ตœ๋Œ“๊ฐ’์ผ ๋•Œ์˜ ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•   ์ˆ˜ ์žˆ๋‹ค.

์œ„ ์ฝ”๋“œ๋กœ ์ตœ์‹ฌ๋ถ€์˜ ๊นŠ์ด๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๋ฌธ์ œ ํ•ด๊ฒฐ ์ฝ”๋“œ

๋”๋ณด๊ธฐ
import java.io.BufferedReader
import java.io.InputStreamReader
import kotlin.math.max

fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
    val case = readLine().toInt()

    for (i in 0 until case) {
        val tree = readLine()
        var deep = 0
        var current = 0

        for (t in tree) {
            if (t == '[') current++
            else current--

            deep = max(deep, current)
        }

        var res: Long = 1
        for (j in 0 until deep) res *= 2

        println(res)
    }
}

 

๋ฌธ์ œ ํ’€์ด

๋ฉ๊ตด์˜ ๊ตฌ์กฐ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ  ์กฐ๊ฑด 1์„ ์‹คํ–‰ํ•ด ์ตœ์‹ฌ๋ถ€์˜ ๊นŠ์ด๋ฅผ ๊ตฌํ•ด ์ค€๋‹ค.

์ •ํ™•ํ•œ ๊นŠ์ด ์ธก์ •์„ ์œ„ํ•ด pow ํ•จ์ˆ˜๋ฅผ ์“ฐ์ง€ ์•Š๊ณ  for๋ฌธ์„ ์‚ฌ์šฉํ•ด ์ฃผ์—ˆ๋‹ค.

 

 

๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •

pow ํ•จ์ˆ˜๋ฅผ ์“ฐ๋ฉด 25%์—์„œ ์˜ค๋‹ต์ด ๋‚œ๋‹ค. ์™œ์ธ์ง€๋Š” ๋ชจ๋ฅธ๋‹ค. pow ํ•จ์ˆ˜๋ฅผ ์“ฐ๋ ค๋ฉด double ํƒ€์ž…์œผ๋กœ ๋ฐ›์•„์„œ ๊ทธ๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ์˜ ์Šคํƒ๊ณผ ํŠธ๋ฆฌ๋ฅผ ์“ฐ๋ผ๊ณ  ๋˜์–ด ์žˆ๋Š”๋ฐ ์ˆ˜ํ•™์ ์œผ๋กœ๋„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

728x90