일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 투포인터
- map
- TS
- 결정 알고리즘
- Cypress
- useAppDispatch
- ESlint
- 호이스팅
- 반공변성
- 리터럴 타입
- CORS
- 타입 좁히기
- app router
- RTK Query
- recoil
- 인터섹션
- Promise
- React
- SSR
- autosize
- 공변성
- Jest
- 무한 스크롤
- dfs
- 이분 검색
- tailwind
- CI/CD
- 태그된 유니온
- async/await
- webpack
Archives
- Today
- Total
짧은코딩
1874 스택 수열 본문
반응형
https://www.acmicpc.net/problem/1874
내 풀이(맞음)
n = int(input())
ary = []
for i in range(n):
x = int(input())
ary.append(x)
lst = []
rst = []
i = 0#ary
j = 1#rst
while(True):
if lst and lst[-1] == ary[i]:
rst.append('-')
lst.pop()
i += 1
continue
if j == n+1:
break
lst.append(j)
j += 1
rst.append('+')
test = []
bol = []
l = 1
k = 0
for i in rst:
if i == '+':
test.append(l)
l += 1
else:
t = test.pop()
if t == ary[k]:
bol.append(t)
k += 1
else:
break
if ary == bol:
for i in rst:
print(i)
else:
print('NO')
ary에 만들어야 할 수열을 입력한다. lst는 1부터 넣어가는 리스트이고 rst는 +, -를 넣는 리스트이다. i는 ary, j는 rst의 위치 값을 나타낸다. 그리고 while문에서는 lst가 안비어 있고 마지막 숫자가 ary의 첫번째랑 같으면 rst에 -를 넣고 lst의 끝 값을 삭제하고 ary의 위치 값을 1 올린다. 그리고 j가 n+1이랑 같아지면 더 이상 조건문을 진행하지 않는다. 그리고 lst에 숫자를 넣고 다음 숫자로 바꿔준다. 그리고 rst에 +를 넣어준다.
그 다음에 test는 lst 처럼 넣어가는 리스트이고 bol는 ary와 같은지 확인해주는 리스트이다. for문에서 rst만큼 반복하면서 +이면 test에 l을 더해주고 다음 1을 더해준다. -이면 t에 test의 오른쪽 값을 삭제한 것을 저장하고 만약에 t가 ary[k]번째와 같으면 bol에 더해주고 k에 1을 더해 ary의 위치 값을 옮겨준다. 만약에 ary의 위치값과 다르면 종료한다.
그리고 ary와 bol이 같으면 정싱적으로 rst를 출력하고 아니면 NO를 출력한다.
반응형
'코딩 테스트(Python) > 백준, 프로그래머스' 카테고리의 다른 글
9375 패션왕 신해빈 (0) | 2022.03.08 |
---|---|
11286 절대값 힙 (1) | 2022.03.07 |
1764 듣보잡 (0) | 2022.02.23 |
1966 프린터 큐 (0) | 2022.02.23 |
10816 숫자 카드 2 (0) | 2022.02.22 |
Comments