반응형
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 |
Tags
- 프로그래머스
- front-end
- Color
- SQL
- algorithm
- 해슁
- java
- DP
- CleanCode
- javascript
- 자바
- Spring
- 다이나믹 프로그래밍
- CSS
- html
- Kotlin
- 클린코드
- inflearn
- 검색트리
- BFS
- DFS
- 코딩테스트
- 순환
- 알고리즘
- codecademy
- 구현
- android
- 정렬
- SWEA
- Web
Archives
- Today
- Total
깡뇽
[백준] 9012번 괄호 파이썬 본문
반응형
자료구조에 있는 문제를 풀어보았다.
원래는 replit이라는 웹 IDE를 사용했었는데 가끔씩 오류가 나곤 했었다. 그래도 참고 사용했지만...
결국 오늘 GitHub에 Codingtest 이름의 repository를 만들었다.
Pycharm에서 앞으로 문제를 풀고 GitHub에 올리려고 한다...!
9012번 괄호 풀이
[시도1] 맞았습니다!!
n = int(input())
for _ in range(n):
line = input()
stack = []
for i in line:
if i == '(':
stack.append('(')
elif i == ')':
if len(stack) == 0:
stack.append(')')
break
else:
stack.pop()
if len(stack) != 0:
print('NO')
else:
print('YES')
유형이 자료 구조에 속한 문제였어서 어떤 자료 구조를 사용해야하나 고민하다가 stack을 선택했다.
사실 굳이 자료 구조를 사용하지 않고 cnt와 같은 카운트 변수를 두고 변화를 확인해도 된다.
나는 stack이라는 이름의 리스트에 ( 가 입력되면 append로 추가를 하고, ) 가 입력되면 stack에 있던 ( 를 pop하여 꺼내준다. 단, ) 가 들어왔을 때 stack에 꺼낼 ( 가 있어야 하는데 없다면 짝이 맞지 않는 것이므로 ) 를 추가한 뒤에 break를 하여 반복문을 멈춘다. 여기서 ) 를 추가하는 것이 아니라 사실 아무거나 추가해도 된다. 그 이유는 마지막에 결국 stack의 길이가 0이 아닐 때에 NO를 출력하므로 아무거나 넣어서 stack의 길이가 0이 아니게 만들면 된다. stack의 길이가 0이면 ( 와 ) 가 짝이 맞다는 것이므로 YES를 출력한다.
어려운 문제는 아니지만 if문을 처리하면서 조금 헛다리를 짚어서 돌아돌아 풀 수 있었다.
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[백준] 14503번 로봇 청소기 파이썬 (1) | 2022.10.04 |
---|---|
[백준] 11399번 ATM 파이썬 (2) | 2022.04.18 |
[백준] 10809번 알파벳 찾기 파이썬 (0) | 2022.03.15 |
[백준] 8958번 OX퀴즈 파이썬 (0) | 2022.03.08 |
[백준] 4963번 섬의 개수 파이썬 (0) | 2022.03.05 |