티스토리 뷰
728x90
https://leetcode.com/problems/valid-parentheses/description/
주어진 문자열(s)가 유효한지 확인
모든 열려있는 괄호는 같은 타입의 괄호로 닫혀야 함
내 풀이
class Solution {
func isValid(_ s: String) -> Bool {
guard s.count > 1 else { return false }
var stack = [Character]()
for char in s {
switch char {
case "(", "{", "[":
stack.append(char)
case ")":
if stack.last == "(" {
stack.removeLast()
} else {
return false
}
case "}":
if stack.last == "{" {
stack.removeLast()
} else {
return false
}
case "]":
if stack.last == "[" {
stack.removeLast()
} else {
return false
}
default:
return false
}
}
return stack.isEmpty
}
}
- 괄호가 짝이 맞아야하니 s.count가 1이하인건 바로 false를 리턴 (guard)
- 변수 stack에 열린괄호"(, {, [" 가 나오면 추가
- 닫힌 괄호 "), }, ]"가 나오면 stack 마지막 요소에 열린괄호와 같은 타입이 있는지 확인
- 있으면 stack 마지막요소 삭제 (짝 맞추기 위함)
- 없으면 괄호를 닫을 수 없으므로 false 리턴
- stack이 다 비어있으면 괄호 짝이 다 맞고, 다 닫을 수 있으니 true 리턴
다른사람의 풀이
class Solution {
func isValid(_ s: String) -> Bool {
guard s.count % 2 == 0 else { return false }
var stack: [Character] = []
for ch in s {
switch ch {
case "(": stack.append(")")
case "[": stack.append("]")
case "{": stack.append("}")
default:
if stack.isEmpty || stack.removeLast() != ch {
return false
}
}
}
return stack.isEmpty
}
}
날고 기는사람은 많다.. 🫠
- s.count가 홀수면 괄호가 짝이 안맞으니 false 리턴
- 열린괄호가 나오면 해당 타입에 맞는 닫힌괄호를 stack에 추가함
- 다음 요소가 열린괄호 외 다른 문자 또는 닫힌괄호일때 stack이 비어있거나, stack의 마지막요소와 같지 않으면 false 리턴
배운것
removeLast()
배열의 요소 마지막을 삭제하고 삭제한 요소를 리턴함.
var arr = ["가", "나", "다", "라"]
print("current arr: \(arr)")
let lastElement = arr.removeLast()
print("삭제된 요소: \(lastElement)")
print("current arr: \(arr)")
// current arr: ["가", "나", "다", "라"]
// 삭제된 요소: 라
// current arr: ["가", "나", "다"]
728x90
'알고리즘' 카테고리의 다른 글
[Swift 알고리즘] - 콜라 문제 (Programmers) (0) | 2024.07.26 |
---|---|
[Swift 알고리즘] - 행렬의 덧셈 (Programmers) (0) | 2024.07.11 |
[Swift 알고리즘] - Best Time to Buy and Sell Stock (LeetCode) (0) | 2023.08.22 |
[Swift 알고리즘] - Valid Palindrome (LeetCode) (0) | 2023.08.22 |
[Swift 알고리즘] - Two Sum (LeetCode) (0) | 2023.08.17 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Swift final
- iOS error
- Swift joined
- removeLast()
- Swift 프로그래머스
- Swift inout
- RIBs tutorial
- swift reduce
- Swift 내림차순
- swift protocol
- Swift
- Class
- CS 네트워크
- ios
- Swift joined()
- Swift Leetcode
- swift (programmers)
- Swift init
- RTCCameraVideoCapturer
- Swift RIBs
- swift programmers
- Combine: Asynchronous Programming with Swift
- 2023년 회고
- Swift 알고리즘
- swift property
- Swift Error Handling
- swift 고차함수
- Swift 프로퍼티
- Swift ModernRIBs
- 원티드 프리온보딩
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함