| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ๋ฐฑ์ค ์ฝํ๋ฆฐ
- kotlin ์๊ณ ๋ฆฌ์ฆ
- vue3
- ๋ฐฐ๋น์ฃผ
- ์ฝํ๋ฆฐ
- ์๋ฐ์คํฌ๋ฆฝํธ
- python
- ์๋ฐ ์๊ณ ๋ฆฌ์ฆ
- js
- pnpm
- ๋ฏธ๊ตญ๋ฐฐ๋น์ฃผํฌ์
- kotlin algorithm
- linux
- Swift
- ํ๋ก๊ทธ๋๋จธ์ค
- GIT
- Java
- ๋ฐฑ์ค
- CI/CD
- ํ์ฝํ
- Kotlin
- javascript
- ์ฝํ๋ฆฐ ์คํ
- ๋ฏธ๊ตญ์ฃผ์
- Vue.js
- ์ฝํ๋ฆฐ ์๊ณ ๋ฆฌ์ฆ
- ์๋ฐ
- ํ์ด์ฌ
- ์๊ณ ๋ฆฌ์ฆ
- java ์ฝ๋ฉ ํ ์คํธ
- Today
- Total
๐ ์ ์ด์ ๋จธ๋ฆฟ์์ผ๋ก
[Kotlin] ๋ฐฑ์ค 2504 ๊ดํธ์ ๊ฐ ์ฝํ๋ฆฐ ํ์ด - stack ๋ณธ๋ฌธ
[Kotlin] ๋ฐฑ์ค 2504 ๊ดํธ์ ๊ฐ ์ฝํ๋ฆฐ ํ์ด - stack
Space_Jin 2025. 3. 31. 20:00๋ฌธ์
4๊ฐ์ ๊ธฐํธ ‘(’, ‘)’, ‘[’, ‘]’๋ฅผ ์ด์ฉํด์ ๋ง๋ค์ด์ง๋ ๊ดํธ์ด ์ค์์ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋๋ค.
- ํ ์์ ๊ดํธ๋ก๋ง ์ด๋ฃจ์ด์ง ‘()’์ ‘[]’๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ค.
- ๋ง์ผ X๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ฉด ‘(X)’์ด๋ ‘[X]’๋ ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด ๋๋ค.
- X์ Y ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ผ๋ฉด ์ด๋ค์ ๊ฒฐํฉํ XY๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด ๋๋ค.
์๋ฅผ ๋ค์ด ‘(()[[]])’๋ ‘(())[][]’ ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด์ง๋ง ‘([)]’ ๋ ‘(()()[]’ ์ ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด ์๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ค ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด X์ ๋ํ์ฌ ๊ทธ ๊ดํธ์ด์ ๊ฐ(๊ดํธ๊ฐ)์ ์๋์ ๊ฐ์ด ์ ์ํ๊ณ ๊ฐ(X)๋ก ํ์ํ๋ค.
- ‘()’ ์ธ ๊ดํธ์ด์ ๊ฐ์ 2์ด๋ค.
- ‘[]’ ์ธ ๊ดํธ์ด์ ๊ฐ์ 3์ด๋ค.
- ‘(X)’ ์ ๊ดํธ๊ฐ์ 2×๊ฐ(X) ์ผ๋ก ๊ณ์ฐ๋๋ค.
- ‘[X]’ ์ ๊ดํธ๊ฐ์ 3×๊ฐ(X) ์ผ๋ก ๊ณ์ฐ๋๋ค.
- ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด X์ Y๊ฐ ๊ฒฐํฉ๋ XY์ ๊ดํธ๊ฐ์ ๊ฐ(XY)= ๊ฐ(X)+๊ฐ(Y) ๋ก ๊ณ์ฐ๋๋ค.
์๋ฅผ ๋ค์ด ‘(()[[]])([])’ ์ ๊ดํธ๊ฐ์ ๊ตฌํด๋ณด์. ‘()[[]]’ ์ ๊ดํธ๊ฐ์ด 2 + 3×3=11 ์ด๋ฏ๋ก ‘(()[[]])’์ ๊ดํธ๊ฐ์ 2×11=22 ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ‘([])’์ ๊ฐ์ 2×3=6 ์ด๋ฏ๋ก ์ ์ฒด ๊ดํธ์ด์ ๊ฐ์ 22 + 6 = 28 ์ด๋ค.
์ฌ๋ฌ๋ถ์ด ํ์ด์ผ ํ ๋ฌธ์ ๋ ์ฃผ์ด์ง ๊ดํธ์ด์ ์ฝ๊ณ ๊ทธ ๊ดํธ๊ฐ์ ์์์ ์ ์ํ๋๋ก ๊ณ์ฐํ์ฌ ์ถ๋ ฅํ๋ ๊ฒ์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๊ดํธ์ด์ ๋ํ๋ด๋ ๋ฌธ์์ด(์คํธ๋ง)์ด ์ฃผ์ด์ง๋ค. ๋จ ๊ทธ ๊ธธ์ด๋ 1 ์ด์, 30 ์ดํ์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๊ทธ ๊ดํธ์ด์ ๊ฐ์ ๋ํ๋ด๋ ์ ์๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ผ ์ ๋ ฅ์ด ์ฌ๋ฐ๋ฅด์ง ๋ชปํ ๊ดํธ์ด์ด๋ฉด ๋ฐ๋์ 0์ ์ถ๋ ฅํด์ผ ํ๋ค.
ํ์ด
import java.util.*
fun main() = with(System.`in`.bufferedReader()) {
val input = readLine()
var result = 0
var tmp = 1
val stack = ArrayDeque<Int>()
for(i in 0..input.length-1) {
when(input[i]) {
'(' -> {
stack.push(2)
tmp *= 2
}
'[' -> {
stack.push(3)
tmp *= 3
}
')' -> {
if(stack.isEmpty() || stack.peek() != 2) {
result = 0
break
}
// ์ง์ ๊ฐ์ด ๋งคํ ๊ฐ์ด๋ผ๋ฉด, ๊ฒฐ๊ณผ๋ฅผ ๋ ํด์ค๋ค.
if(input[i-1] == '(') {
result += tmp
}
tmp /= stack.pop()
}
']' -> {
if(stack.isEmpty() || stack.peek() != 3) {
result = 0
break
}
// ์ง์ ๊ฐ์ด ๋งคํ ๊ฐ์ด๋ผ๋ฉด, ๊ฒฐ๊ณผ๋ฅผ ๋ ํด์ค๋ค.
if(input[i-1] == '[') {
result += tmp
}
tmp /= stack.pop()
}
}
}
// ์์ธ์ฒ๋ฆฌ
if(!stack.isEmpty()) result = 0
println(result)
}'Programming > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Java] ์๋ฐ์ ์ด์ง ์ฐ์ฐ(๋นํธ ์ฐ์ฐ) (0) | 2025.04.06 |
|---|---|
| [Java] Softeer Level 2- "GPT์ ์ซ์ ๋น๊ต" ์๋ฐ ํ์ด (0) | 2025.04.06 |
| [Kotlin] ๋ฐฑ์ค 14888 - ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ(์ฌ๊ท์์ ํ์ DFS, ๋ฐฑํธ๋ํน) (1) | 2025.03.09 |
| [Kotlin] ๋ฐฑ์ค 1978 ์์ ์ฐพ๊ธฐ (1) | 2025.03.08 |
| [Kotlin] ๋ฐฑ์ค 1292 - ์ฝ๊ฒ ํธ๋ ๋ฌธ์ (1) | 2024.11.13 |