반응형
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
- 파이썬 평범한배낭
- 금고털이 파이썬
- 등수매기기 파이썬
- 백준 A->B
- 백준 예산
- 1987파이썬
- 백준 바이러스
- CRUD
- 백준 점프 파이썬
- 장애물인식프로그램 파이썬
- 소프티어 지도자동구축
- 백준 평범한배낭
- 백준 점프
- 프로그래머스
- 백준 등수매기기
- 파이썬데이터분석라이브러리
- 백준 피아노체조
- jenkins
- 백준알파벳파이썬
- 소프티어 장애물인식프로그램
- 백준
- express mongodb
- MongoDB
- 백준 전쟁-전투
- 백준 전쟁 파이썬
- 도커 컨테이너
- 피아노체조 파이썬
- express
- MySQL완전삭제
- 지도자동구축 파이썬
Archives
- Today
- Total
바위 뚫는중
[BOJ] 스택문제 - 1874 스택 수열, 4949 균형잡힌 세상 Python3 본문
반응형
백준 1874 스택 수열
이게 뭔소린가 했더니 내가 8까지의 수를 스택에 넣는다 쳤을때, 4, 3, 6, 8, 7, 5, 2, 1이 주어지는데, 스택을 이용해서 이 수열을 만들수 있냐는게 이 문제다. 문제 말이 어렵다.
여튼 저 수열을 만들어보자.
1,2,3,4 push 4,3을 pop
1,2,5,6 push 6 pop
1,2,5,7,8 push 8,7 pop
1,2,5 pop → 4,3,6,8,7,5,2,1
1에서 주어진 n까지 내가 원하는 수를 찾으면 pop, 찾지 못하면 push 하는 것이 원리인듯하다!
그래서 여튼 저 수열을 만들라면 4가 나와야하니까 4까지는 수를 집어넣어야한다
- 주어진 수가 4보다 작으면 스택에 넣는다. 1부터 시작이니 1부터 3까지는 넣어줌!
- 변수를 이용해보자
- 주어진 수가 4라면, 스택에서 빼준다
- 두가지 경우가 다 아니라면 NO를 출력하면 된다
n = int(input())
count = 1
stack = []
op = []
for i in range(n):
data = int(input())
while count <= data:
stack.append(count)
op.append('+')
count += 1
if stack.pop() == data:
op.append('-')
else:
print("NO")
exit(0)
result = '\n'.join(op)
print(result)
백준 4949 균형잡힌 세상
세계는 균형이 안잡혀있는데,, 문제가 참 힘들군ㅎ
예전에 스택을 이용한 괄호문제를 조금 더 응용한 버전 같다.
( 이괄호는 ) 이괄호로 끝나야만 하고, [ ] 이 친구들도 마찬가지 인셈
) ( 이런식은 안되는 것이고,
→ (와 [가 나올경우 +1, )와 ]가 나올경우 -1로 간주하여 합계가 0이되는지 확인하면 될것 같다.
생각정리
- ( 와 [ 일 경우는 스택에 push, ) 와 ]가 나타나면 앞선 괄호들을 pop 해주면 된다
- 다른 단어들은 그냥 무시하고 코드를 작성하면 된다.
- . 가 나타날 경우에는 종료를 해주도록!!
- 따로 몇개의 줄이라는 조건이 없어서 for가 아닌 while로 시작한뒤에 for로 한글자 한글자를 파악하면 된다.
코드
import sys
while True:
input = str(sys.stdin.readline().rstrip())
stack = []
if input == '.':
break
for i in input:
if i == ('(') or i == ('['):
stack.append(i)
elif i == ')':
if stack and stack[-1] == '(':
stack.pop()
else:
stack.append(i)
break
elif i == ']':
if stack and stack[-1] == '[':
stack.pop()
else:
stack.append(i)
break
if not stack:
print('yes')
else:
print('no')
계속 틀려서 다른 사람 코드들을 보니 true false등을 tmp로 구분짓기도 했다.
알고보니 내가 틀린 이유는 print를 YES NO 대문자로 해서 틀림
맞왜틀을 10번넘게 했다. 눈물이 나네.
반응형
'Algorithms' 카테고리의 다른 글
[BOJ] 큐 문제 - 11866 요세푸스 문제 0, 1966 프린터 큐 (0) | 2023.02.04 |
---|---|
[BOJ] 큐 문제 - 18258 큐 2, 2164 카드2 Python3 (0) | 2023.01.30 |
[BOJ] 스택문제 - 9012 괄호, 10828 스택, 10773 제로 Python3 (0) | 2023.01.27 |
[Algorithms] 자료구조 - 선형구조 / 비선형구조 (2) | 2023.01.27 |
[BOJ] 백준 13505 주유소 Python3 (0) | 2022.11.02 |