์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ
- ์๊ณ ๋ฆฌ์ฆ
- ๋ธ๋ฃจํธํฌ์ค
- dfs
- ์ฝ๋ฉํ ์คํธ
- WebApp
- ์ฝํ
- WebView
- ๋ถํ ์ ๋ณต
- ํ๋ก๊ทธ๋๋จธ์ค
- BFS
- ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ
- ๋์ ํฉ
- ๋ฌธ์์ด
- dp
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- ์คํ
- ios
- ์ด์งํ์
- ์์
- SwiftUI
- ๋ถํ ํ์
- Queue
- ๋ฐฑํธ๋ํน
- ๋นํธ์ฐ์ฐ์
- ๋ฐฑ์ค
- ๋ถํ ์ ๋ณต
- Swift
- Today
- Total
MUKER_DEV with iOS
[swift] ๋ฐฑ์ค - 2504๋ฒ: ๊ดํธ์ ๊ฐ ๋ณธ๋ฌธ
2504๋ฒ: ๊ดํธ์ ๊ฐ
4๊ฐ์ ๊ธฐํธ ‘(’, ‘)’, ‘[’, ‘]’๋ฅผ ์ด์ฉํด์ ๋ง๋ค์ด์ง๋ ๊ดํธ์ด ์ค์์ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋๋ค. ํ ์์ ๊ดํธ๋ก๋ง ์ด๋ฃจ์ด์ง ‘()’์ ‘[]’๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ค. ๋ง์ผ X
www.acmicpc.net
์ฑ๊ณต ํ์ด
let a = readLine()!.map { String($0) }
let value = ["(": 2, "[": 3]
let pair = [")": "(", "]": "["]
var stack = [String]()
var temp = 1
var result = 0
for i in 0..<a.count {
if a[i]=="(" || a[i]=="[" {
temp *= value[a[i]]!
stack.append(a[i])
} else {
if stack.isEmpty || stack.last! != pair[a[i]] {
result = 0
break
} else {
if a[i-1]==pair[a[i]] { result += temp }
temp /= value[stack.removeLast()]!
}
}
}
print(stack.isEmpty ? result : 0)
ํ์ด ํค์๋
์์ : (()[[]])([])
๊ดํธ๊ฐ ์ด๋ฆด ๋๋ง๋ค 2 ๋๋ 3์ ๊ฐ์ ๊ณฑํด์ ๋์ ์ํต๋๋ค.
์์ ๋ฅผ ๊ฐ์ง๊ณ ์๋ฅผ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
์ฒซ ๋ฒ์งธ ๋ฌธ์ '('๊ฐ ๋ค์ด์ค๋ฉด temp ๋ณ์์ 2๋ฅผ ์ ์ฅํ๊ณ stack๋ฐฐ์ด์ ๊ดํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
์ฒ์ temp๋ณ์๋ 1๋ก ์ด๊ธฐํ์์ผ์คฌ์ต๋๋ค.
temp = 2โ
๋ค์ ๋ฌธ์ '('๋ ์ด๋ฆฌ๋ ๊ดํธ์ ๋๋ค. ๊ธฐ์กด temp๊ฐ๊ณผ 2๋ฅผ ๊ณฑํด์ temp์ ์ ์ฅํ๊ณ ๊ดํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
ํด๋น ๊ณ์ฐ์ ๊ดํธ ์์ ๊ดํธ๊ฐ ์์ ๋ ๊ณฑํด์ฃผ๋ ์ฑ์ง ๋๋ฌธ์ ๊ดํธ๊ฐ ์ด๋ฆด ๋๋ง๋ค temp๊ฐ์ ๊ณฑํ๊ฒ ๋๋ ๊ฒ๋๋ค.temp = 4
๋ค์์ ๋ซํ๋ ๊ดํธ๊ฐ ๋์ต๋๋ค.
๋ซํ ๊ดํธ๊ฐ ๋์ฌ ๋ stack์ด ๋น์ด์๊ฑฐ๋ stack๋ง์ง๋ง ๊ดํธ๊ฐ ํ์ฌ ๋ซํ ๊ดํธ์ ์ง์ด ์๋๋ผ๋ฉด
์ฌ๋ฐ๋ฅด์ง ๋ชปํ ๊ดํธ์ด์ด๊ธฐ ๋๋ฌธ์ result์ 0์ ๋ฃ๊ณ break ์ํต๋๋ค.
stack์ ๋ง์ง๋ง ๊ดํธ๊ฐ ํ์ฌ ๋ซํ ๋ฌธ์์ ์ง ์ผ ๋
a๋ฐฐ์ด์์ ์์ ๋ฌธ์๊ฐ ํ์ฌ ๋ฌธ์์ ์ง์ ์ด๋ฃฌ๋ค๋ฉด (ํ์ฌ ')'๋ซํ ๋ฐฐ์ด์ ์์ ๋ฌธ์๋'('๋ก ์ง์ ์ด๋ฃจ๊ณ ์์)
temp๊ฐ์ result๊ฐ์ ๋ํ๊ฒ ๋ฉ๋๋ค.temp = 4 result = 4
a๋ฐฐ์ด์ ์์ ๋ฌธ์๊ฐ ํ์ฌ ๋ฌธ์์ ์ง์ ์ด๋ฃฐ ๋๋ง ์จ์ ํ ํด๋น ๊ดํธ๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ด ๊ณ์ฐ๋ฉ๋๋ค.
์) (()[[]])([]) , ์ฃผํฉ์์ด ์น ํด์ง ๋ถ๋ถ๋ง ํ์ฌ temp๊ฐ์ result์ ๋ํด์ฃผ๊ฒ ๋จ.
๋ค์ ๋ซํ ๋ฐฐ์ด์ value๋งํผ temp๊ฐ์ ๋๋ ์ฃผ๊ณ , ์คํ์์ ์ง์์ฃผ๋ฉด ๋ฉ๋๋ค.temp = 2 reesult = 4
์ ๊ณต์์ ๋ฐ๋ณต๋ฌธ์ด ๋๋ ๋๊น์ง ์ ์ฉํ๋ค๋ฉด๋ชจ์:(, temp:2, result:0 ๋ชจ์:(, temp:4, result:0 ๋ชจ์:), temp:2, result:4 ๋ชจ์:[, temp:6, result:4 ๋ชจ์:[, temp:18, result:4 ๋ชจ์:], temp:6, result:22 ๋ชจ์:], temp:2, result:22 ๋ชจ์:), temp:1, result:22 ๋ชจ์:(, temp:2, result:22 ๋ชจ์:[, temp:6, result:22 ๋ชจ์:], temp:2, result:28 ๋ชจ์:), temp:1, result:28
์ ์์๋๋ก temp๊ฐ๊ณผ result๊ฐ์ด ๋ฐ๋๊ฒ ๋ฉ๋๋ค.
'๐ค ์๊ณ ๋ฆฌ์ฆ > BAEKJOON' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[swift] ๋ฐฑ์ค - 2578๋ฒ: ๋น๊ณ (0) | 2023.06.09 |
---|---|
[swift] ํ๋ก๊ทธ๋๋จธ์ค - ์ ์๋ฅผ ๋์ ํ์ผ๋ก ๋ฐฐ์นํ๊ธฐ (0) | 2023.06.08 |
[swift] ๋ฐฑ์ค - 17413๋ฒ: ๋จ์ด ๋ค์ง๊ธฐ 2 (0) | 2023.06.05 |
[swift] ๋ฐฑ์ค - 2167๋ฒ: 2์ฐจ์ ๋ฐฐ์ด์ ํฉ (0) | 2023.06.04 |
[swift] ๋ฐฑ์ค - 17478๋ฒ: ์ฌ๊ทํจ์๊ฐ ๋ญ๊ฐ์? (0) | 2023.06.04 |