[프로그래머스 LV2] 괄호 회전하기

Junyoung Park·2022년 9월 25일
0

코딩테스트

목록 보기
618/631
post-thumbnail

1. 문제 설명

괄호 회전하기

2. 문제 분석

스택을 통해 올바른 형태의 괄호인지 체크 + 문자열 이동을 통해 새로운 문자열 생성

3. 나의 풀이

import Foundation

func solution(_ s:String) -> Int {
    var total = 0
    
    for idx in 0..<s.count {
        let first = s.index(s.startIndex, offsetBy: idx)
        let firstString = s[s.startIndex..<first]
        let secondString = s[first..<s.endIndex]

        let targetString = secondString + firstString
        if isRightBrachet(word: String(targetString)) {
            print(targetString)
            total += 1
        }
    }
    
    return total
}

func isRightBrachet(word: String) -> Bool {
    var stack = [Character]()
    var brachetPair:[Character:Character] = [")" : "(", "]" : "[", "}" : "{"]
    for letter in word {
        if let pair = brachetPair[letter] {
            if let last = stack.last {
                if last == pair {
                    stack.removeLast()
                } else {
                    stack.append(letter)
                }
            } else {
                stack.append(letter)
            }
        } else {
            stack.append(letter)
        }
    }
    return stack.isEmpty
}
profile
JUST DO IT

0개의 댓글