Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 파이썬
- Heap
- Algorithm
- 1697
- 안드로이드
- Python
- 프로그래머스
- python #7490 #백준 #알고리즘 #BFS
- 2941
- MVC
- 해커랭크
- 파이팅
- BFS
- 1766
- 백준
- 1759
- 디자인패턴
- 1302
- 1715
- 백준 #알고리즘 # Algorithm #파이썬
- level3
- 최소힙
- 12865
- 라이징프로그래머2 #Android #안드로이드 #Quitter #MakeUs
- deque
- 올바른 괄호
- 알고리즘
- REST API
- AOS
- CS
Archives
Liam 일지
프로그래머스 올바른 괄호 본문
728x90
문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- "()()" 또는 "(())()" 는 올바른 괄호입니다.
- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
제한사항
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
def solution(s):
check_s={
')':'(',
'}':'{',
']':'['
}
stack=[]
for i in s:
if i=='(' or i =='{' or i=='[':
stack.append(i)
else:
if stack:
top=stack.pop()
if check_s[i]!=top:
return False
else: return False
if len(stack)!=0:
return False
return True
문제설명: 괄호의 열린 부분과 닫히는 부분을 매칭 시키기위해 dictionary 자료형으로 key와 value 값을 통해서 확인을 했습니다.
- 주어진 문자열을 for문을 통해 순회하면서 열린 부분 '({[' 이 나오면 stack에 추가하고 닫힌 부분이 나오면 그 순간에 스택의 최상단이 dictionary를 통해 맞는 값일경우 pop을 시키고 아닐 경우 False를 반환합니다.
- 순회가 끝나고 stack에 남아있는 괄호가 있다면 False를 반환하도록 합니다.
사용언어: python
문제출처: https://programmers.co.kr/learn/courses/30/lessons/12909?language=python3
코딩테스트 연습 - 올바른 괄호
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은
programmers.co.kr
'Algorithm(백준)' 카테고리의 다른 글
| 프로그래머스 가장 긴 팰린드롬 (0) | 2021.05.10 |
|---|---|
| 백준 1926번 그림 (0) | 2021.05.10 |
| HackerRank (0) | 2021.05.01 |
| 백준 2644번 촌수계산 (0) | 2021.04.30 |
| Hacker Rank (Climbing the Leaderboard) (0) | 2021.04.30 |