(프로그래머스) 괄호 회전하기
글 작성자: HEROHJK
// 괄호 회전하기
// https://programmers.co.kr/learn/courses/30/lessons/76502
func turnParen(_ s:String) -> Int {
var count = 0
var sArray = Array(s)
var stack: [Character]
if !pairCheck(sArray) { return 0 } // 짝이 안맞으면 카운트가 될수가 없으므로 0 반환.
for _ in 0 ..< s.count {
stack = [Character]()
for c in sArray {
if !stack.isEmpty && closeParen(stack.last!) == c {
stack.removeLast()
} else {
stack.append(c)
}
}
if stack.isEmpty { count += 1 }
sArray.append(sArray[0])
sArray.remove(at: 0)
}
return count
}
func closeParen(_ c: Character) -> Character {
return c == "(" ? ")" : c == "{" ? "}" : c == "[" ? "]" : " "
}
func pairCheck(_ str: [Character]) -> Bool {
var bigLParen = 0
var bigRParen = 0
var middleLParen = 0
var middleRParen = 0
var smallLParen = 0
var smallRParen = 0
str.forEach {
switch $0 {
case "[": bigLParen += 1
case "]": bigRParen += 1
case "{": middleLParen += 1
case "}": middleRParen += 1
case "(": smallLParen += 1
case ")": smallRParen += 1
default: break
}
}
if bigLParen != bigRParen ||
middleLParen != middleRParen ||
smallLParen != smallRParen {
return false
}
return true
}
반응형
댓글
이 글 공유하기
다른 글
-
(알고리즘) Implement, 구현
(알고리즘) Implement, 구현
2021.11.30 -
(알고리즘) Greedy, 탐욕법
(알고리즘) Greedy, 탐욕법
2021.11.26 -
[기업 코딩 테스트] 유효한 시리얼 찾기
[기업 코딩 테스트] 유효한 시리얼 찾기
2018.05.29 -
[C#] 제곱 변환과 홀수 찾기
[C#] 제곱 변환과 홀수 찾기
2018.05.23