๐๐ปโ๏ธ ํผ-์์ค/๐ฃ ํ๋ก๊ทธ๋๋จธ์ค
[์ค์ํํธ ์๊ณ ๋ฆฌ์ฆ] ํ๋ก๊ทธ๋๋จธ์ค: ๊ดํธ ํ์ ํ๊ธฐ
๊ฐ๋ฐํ๋ ํ์ด
2021. 7. 31. 22:46
๋ฌธ์
๋ค์ ๊ท์น์ ์งํค๋ ๋ฌธ์์ด์ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๊ณ ์ ์ํฉ๋๋ค.
- (), [], {} ๋ ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค.
- ๋ง์ฝ A๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๋ฉด, (A), [A], {A} ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค. ์๋ฅผ ๋ค์ด, [] ๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ฏ๋ก, ([]) ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค.
- ๋ง์ฝ A, B๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๋ฉด, AB ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค. ์๋ฅผ ๋ค์ด, {} ์ ([]) ๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ฏ๋ก, {}([]) ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค.
๋๊ดํธ, ์ค๊ดํธ, ๊ทธ๋ฆฌ๊ณ ์๊ดํธ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด s๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ด s๋ฅผ ์ผ์ชฝ์ผ๋ก x (0 ≤ x < (s์ ๊ธธ์ด)) ์นธ๋งํผ ํ์ ์์ผฐ์ ๋ s๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด ๋๊ฒ ํ๋ x์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
ํ์ด
์คํ์ ์ฌ์ฉํด์ ํ์ดํ์ต๋๋ค. ์กฐ๊ฑด๋ฌธ์ด ๋๋ฌด ๊ธธ์ด์ง๋ ๊ฒ์ ์ต์ ํํ๊ณ ์ถ์ด์ ๋์ ๋๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ์คํ ๊ฐ์ฅ ์๋จ์ ์๋ ๋ฌธ์๊ฐ ์ด๋ฒ์ ๋ฃ์ ๋ฌธ์์ ์ง์ธ์ง ํ์ธํ ์ ์๋๋ก ํ์ต๋๋ค.
์ฝ๋
import Foundation
func isBalanced(_ s: [Character]) -> Bool {
var stack: [Character] = []
let braces: [Character:Character] = ["{":"}", "[":"]", "(":")"]
for i in s {
if !stack.isEmpty && braces[stack.last!] == i {
stack.removeLast()
} else {
stack.append(i)
}
}
return stack.isEmpty
}
func solution(_ s:String) -> Int {
var str = Array(s)
print(type(of: str))
var answer = 0
for _ in str {
str.append(str.removeFirst())
if isBalanced(str) {
answer += 1
}
}
return answer
}