일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이썬sort
- vm도커설치하는법
- springboot_exception_handler
- dockerinstall
- 스프링부트api
- 인스타클론
- 우분투도커설치
- 스프링사진
- 스프링부트사진올리기
- 스프링부트팔로잉
- 스프링사진업로드
- centos도커설치
- 스프링부트
- 스프링부트중복예외처리
- 스프링부트서버에사진전송
- 스프링구독
- 스프링익셉션처리
- ssh도커설치
- 출처 따배도
- 도커설치하는법
- 스프링부트팔로우취소
- 멀티폼
- 출처 메타코딩
- 스프링부트구독취소
- WAS웹서버
- 출처 문어박사
- 출처 노마드코더
- 출처 코딩셰프
- 서버에도커설치
- 스프링이미지업로드
- Today
- Total
MakerHyeon
[LeetCode] 20. Valid Parentheses 본문
https://leetcode.com/problems/valid-parentheses/
Valid Parentheses - LeetCode
Valid Parentheses - Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. An input string is valid if: 1. Open brackets must be closed by the same type of brackets. 2. Open brackets must be
leetcode.com
이 문제는 괄호의 짝이 맞는 지 확인후 맞다면 True,틀리다면 False를 Return하는 문제이다. 나의 경우 착각했던 부분은
"( [ ) ]" 가 True라고 생각했다. 하지만 이는 False이다. 이 예시같은경우 )는 같은 타입의 ( 로 닫혀야하는데, [ 로 닫혀 이경우도 틀리게 본다는 것이다.(Open brackets must be closed by the same type of brackets.)
(문제의 주의사항을 더욱 유의깊게 보는 습관을 들여야겠다.)
어쨌든 '(())' 등 (,{,[ 왼쪽 괄호가 나올땐 모두 스택에 담는다. 그후 ),},]등 오른쪽괄호가 나올때부터 Stack에서 하나씩 꺼내어(pop) 해당 괄호의 짝인지 확인한다.이를 위하여 key:value hash를 이용한다. 마지막으로 모두 짝이맞아 스택이 비었다면 True를 리턴해준다.
각 괄호에 알맞는 짝이 나오게하는 문제이니, stack임을 알아차리는게 핵심이었다.
내가푼건 지저분하기에 leetcode베스트코드를 올린다.
SOLUTION CODE
# PYTHON Best Code
class Solution:
def isValid(self, s: str) -> bool:
stack = []
closeToOpen = { ")" : "(", "]":"[", "}":"{"}
for c in s:
if c in closeToOpen: # 해당 키 값이 있나 확인 ),],}
if stack and stack[-1] == closeToOpen[c]:
stack.pop()
else:
return False
else:
stack.append(c)
return True if not stack else False
# C++ Best Code
class Solution {
public:
bool isValid(string s) {
string st;
map<char,char>mp; // 괄호 짝 맵핑
mp['('] = ')';
mp['{'] = '}';
mp['['] = ']';
st.push_back(s[0]);
for (int i = 1; i < s.size(); i++) {
if(mp[st.back()] == s[i]) //괄호짝이맞다면
st.pop_back(); //pop
else
st.push_back(s[i]);
}
return st.size() ? 0 : 1;
}
};
'Algorithm > LeetCode' 카테고리의 다른 글
[LeetCode] 21. Merge Two Sorted Lists (0) | 2023.01.19 |
---|---|
[LeetCode] 206. Reverse Linked List (0) | 2023.01.10 |
[LeetCode] 155. Min Stack (0) | 2023.01.05 |
[LeetCode] 36. Valid Sudoku (0) | 2023.01.04 |
49. Group Anagrams (0) | 2023.01.03 |