728x90
반응형
※ 문제링크
4949번: 균형잡힌 세상
하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마
www.acmicpc.net
※ 기본문제
[BOJ] 10828번 스택 / 사용언어 : 파이썬(python)
※ 문제링크 : https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서
data-is-power.tistory.com
※ 문제풀이
while True:
check_list = []
sentence = input()
if sentence != '.':
k = 0
while k != len(sentence):
if sentence[k] == '(' or sentence[k] == ')' or sentence[k] == '[' or sentence[k] == ']':
if len(check_list) > 0:
if check_list[-1] + sentence[k] == '()'or check_list[-1] + sentence[k] == '[]':
check_list.pop()
else:
check_list.append(sentence[k])
else:
check_list.append(sentence[k])
k += 1
if len(check_list) == 0:
print('yes')
else:
print('no')
else:
break
해당문제는 스택을 활용하여 푸는 문제였다. 생각했던 문제풀이 방법은 아래와 같았다.
1. 종료문자 '.'가 들어올때까지 조건문 반복/ 종료문자가 들어오면 break로 반복문 종료
2. 문자열내부의 괄호문자를 저장할 리스트 생성 후 반복하며 괄호의 정상여부 확인
3. 들어온 문자열을 처음부터 끝까지 탐색하며 '()' 또는 '[]'형성되면 괄호문자리스트에서 해당 문자 삭제
4. 반복문 종료 후 괄호문자리스트에 값이 존재하면 'no'를 값이 없으면 'yes'를 출력
코드 작성 후 실행을 해보니 문제없이 정상적으로 작동하는 것을 확인하였다.
P.S 개발자가 되기위해 공부중입니다. 잘못된 부분을 댓글로 남겨주시면 학습하는데 큰 도움이 될 거 같습니다.
728x90
반응형
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 17298번 오큰수 / 사용언어 : 파이썬(python) (0) | 2021.12.19 |
---|---|
[BOJ] 1874번 스택 수열 / 사용언어 : 파이썬(python) (0) | 2021.12.17 |
[BOJ] 14888번 연산자 끼워넣기 / 사용언어 : 파이썬(python) (0) | 2021.12.17 |
[BOJ] 15652번 N과 M (4) / 사용언어 : 파이썬(python) (0) | 2021.12.16 |
[BOJ] 15651번 N과 M (3) / 사용언어 : 파이썬(python) (0) | 2021.12.16 |
댓글