์์ญ์ด ๋งค๋ฌ๊ธฐ(2716๋ฒ)
Silver 2
#์๋ฃ ๊ตฌ์กฐ #ํธ๋ฆฌ #์คํ
๋ฌธ์ ๋ด์ฉ
๋ฌธ์ ์ ๊ทผ
์ ๋ ฅ์ ์ค์ง ๋๊ดํธ๋ง ์ฃผ์ด์ง๋ค. ๋๊ดํธ๊ฐ ์์ผ๋ฉด ๋ฉ๊ตด์ด 2๊ฐ๋ก ๋ถ๋ฆฌ๋๋ ๊ฒ์ด๋ค.
๊ฐ ๋ฉ๊ตด์๋ ๋์ผํ ์์ ์์ญ์ด๊ฐ ์์ด์ผ ํ๋ค.
๋ฉ๊ตด์ 2๊ฐ๋ก๋ง ๋๋์ด์ง ์ ์๋ค.
์ ๋ฌธ์ ์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ๊ฐ ๋ฉ๊ตด ์์ ๋ง๋ ์์ญ์ด๋ค์ด ๋งค๋ฌ๋ ค ์๋ค.
์ฒซ ๋ฒ์งธ ๋ฉ๊ตด์ ์์ญ์ด ์๋ ๊ฐ ๋ฉ๊ตด์ 4๋ง๋ฆฌ์ฉ์ด๋ค(2+ 2, 1 + 1 + 2).
์ค๋ฅธ์ชฝ์ ๋ฉ๊ตด์ ์์ญ์ด ์๋ ๊ฐ ๋ฉ๊ตด์ 2๋ง๋ฆฌ์ฉ์ด๋ค(1 + 1, 2).
๊ฐ ๋ฉ๊ตด์ depth๊ฐ ๊น์ด์ง์๋ก ํ์ํ ์์ญ์ด์ ์๊ฐ 2๋ฐฐ์ฉ ๋์ด๋๊ฒ ๋๋ค.
๋ฉ๊ตด์ ๋ฌด์กฐ๊ฑด 2๊ฐ์ฉ์ผ๋ก๋ง ๋๋์ด์ง๊ธฐ ๋๋ฌธ์ ํ ๋ฉ๊ตด์ depth๊ฐ ๊น์ด์ง์๋ก ๋ค๋ฅธ ๋ฉ๊ตด๋ ๊น์ด์ง ๋ฉ๊ตด์ depth์ ๋ฐ๋ผ ๋์ด๋ ์์ญ์ด ์์ ๋ง๊ฒ ์์ญ์ด๋ฅผ ์ถ๊ฐํด ์ค์ผ ํ๋ค.
์ฌ์ง 1-1์์๋ ์ต๋ ๊น์ด๊ฐ 3์ด๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ํ ์์ญ์ด์ ์๊ฐ 8๋ง๋ฆฌ์ด๋ฏ๋ก, ์ฐจ์๋ฅผ depth๋ก ํ๋ 2์ ์ ๊ณฑ์๋ฅผ ๊ตฌํด์ฃผ๋ฉด ๋๋ค.
์ด์ 2์ depth์น์ ๊ตฌํด์ผ ํ๋ ์ฌ์ค์ ์๊ฒ ๋์๋ค.
๊ทธ๋ฌ๋ฉด ์ด๋ป๊ฒ ๊ตฌํ ์ ์์๊น?
ํธ๋ฆฌ๋ฅผ ์ด์ฉํด์ ๊ตฌํ ์ ์์ง๋ง ๊ตณ์ด ๊ทธ๋ ๊ฒ ๊ตฌํ ํ์๋ ์์ ๊ฒ ๊ฐ๋ค. ํธ๋ฆฌ๋ฅผ ๋ค๋ฃฐ ์ค ์๋ฉด ์ง๊ธ ๋ฐ๋ก ํธ๋ฆฌ๋ฅผ ๊ตฌํํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์.
ํธ๋ฆฌ๋ฅผ ๋ชจ๋ฅด๋ ์ฐ๋ฆฌ๋ ๋๊ดํธ์ ๋ฐฉํฅ์ ๋ฐ๋ผ ๊น์ด๋ฅผ ์ธก์ ํ ์ ์๋ค.
๋๊ดํธ ์ฌ๋ ๋ถ๋ถ(' [ ')์ด ๋ค์ด์ค๋ฉด ๊น์ด๋ฅผ ์ฆ๊ฐ์ํค๊ณ , ์๋ ๊ฒฝ์ฐ์๋ ๊น์ด๋ฅผ ์ค์ฌ ์ฃผ๋ฉด ๋๋ค.
๋ฉ๊ตด์ ๊ตฌ์กฐ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๊น์ด๋ฅผ ์ธก์ ํ ์ ์๋ค.
์ ํ๋ฅผ ๋ณด๋ฉด ๊ฐ์ฅ ๊น์ ๋์ ๊น์ด๊ฐ 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 ํ์ ์ผ๋ก ๋ฐ์์ ๊ทธ๋ฐ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ ๊ฒ ๊ฐ๋ค.
์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ๋ ์๋ฃ ๊ตฌ์กฐ์ ์คํ๊ณผ ํธ๋ฆฌ๋ฅผ ์ฐ๋ผ๊ณ ๋์ด ์๋๋ฐ ์ํ์ ์ผ๋ก๋ ํด๊ฒฐํ ์ ์๋ค.
'๐ฏ | ๋ฐฑ์ค > ๐ | Silver' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin, S3] ๋ฐฑ์ค 13305๋ฒ ์ฃผ์ ์ (0) | 2024.08.27 |
---|---|
[Kotlin, S2] ๋ฐฑ์ค 1912๋ฒ ์ฐ์ํฉ (0) | 2024.08.26 |
[Kotlin] ๋ฐฑ์ค 16506๋ฒ CPU (0) | 2024.08.23 |
[Kotlin, S5] ๋ฐฑ์ค 11068๋ฒ ํ๋ฌธ์ธ ์ (0) | 2024.08.23 |
[Kotlin, S1] ๋ฐฑ์ค 1991๋ฒ ํธ๋ฆฌ ์ํ (0) | 2024.08.21 |