새소식

인기 검색어

프로그래머스/Lv.2

[Swift] 괄호 변환

  • -
import Foundation

func solution(_ p:String) -> String {
    // 입력이 빈 문자열인 경우, 빈 문자열 반환
    if p.count < 1 {return ""}

    var count = 0, index = p.startIndex
    
    // repeat while문으로 균형잡힌 괄호 문자열인지 확인
    // ( 이면 count + 1, ) 이면 count - 1
    // count가 0이 될 때까지 진행
    repeat{
        count += String(p[index]) == "(" ? 1 : -1
        index = p.index(after: index)
    } while count != 0

    // 위의 과정에서 알아낸 index 값을 토대로 u, v 문자열 나누기
    var u = String(p[..<index]), v = String(p[index...])
    
    // 올바른 괄호 문자열인지 확인
    if String(u.first!) == "("{
        return u + solution(v)
    }else{
        u.removeLast()
        u.removeFirst()
        return "(\(solution(v)))\(u.map{String($0) == "(" ? ")" : "("}.joined())"
    }
}

 

'프로그래머스 > Lv.2' 카테고리의 다른 글

[Swift] 수식 최대화  (0) 2023.06.17
[Swift] 무인도 여행  (0) 2023.06.17
[Swift] 전력망 둘로 나누기  (0) 2023.06.17
[Swift] 택배상자  (0) 2023.06.17
[Swift] 두 큐 합 같게 만들기  (0) 2023.06.17
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.