티스토리 뷰

728x90

 

오늘의 알고리즘 문제는 Stack / Queue에 관련된 문제였다.

주어진 s에 괄호가 여/닫이 다 되는지 판단하고 답을 내는 문제였고,

풀이는 아래와 같다.

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/12909

 

 

내 풀이

import Foundation

func solution(_ s:String) -> Bool {
    var ans:Bool = false
    var tempArr: [String] = []

    for bracket in s {
        if !tempArr.isEmpty && tempArr[tempArr.endIndex - 1] == "(" && bracket == ")" {
            tempArr.removeLast()
        } else {
            tempArr.append(String(bracket))
        }
    }

    ans = tempArr.isEmpty ? true : false
    
    return ans
}

 

 

  1. ")"를 append 하기전 tempArr 마지막 index에 "(" 가 있으면 pop(removeLast)
  2. 없으면 push(append)
  3. 반복문이 종료된 후 tempArr가 비어있지 않으면 짝이 맞는게 없다는거니 return false

 

처음엔 "("의 갯수와 ")"의 갯수가 같으면 return true | false로 구상을 했다.

하지만 예제를 읽어보니 ")()(" 같은 케이스가 있을 경우 false로 된다해서 생각을 다시했다. 

 

예제로 문제를 먼저 파악하는 경향이 있는데 

예제도 꼼꼼히, 문제도 꼼꼼히 보자 !! 

728x90