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
- AWS
- 깃
- 리액트
- 한빛
- 플라스크
- 원티드
- pyladies
- 전문가를위한파이썬
- Python
- 스터디
- 위코드
- 예리님
- 환경변수
- cleancode
- 프리온보딩
- 코드프레소
- env
- 패스트캠퍼스
- fluentpython
- codepresso
- 코테
- pyladiesseoul
- 한빛미디어
- 개발
- 파이썬
- git
- flask
- React
- 개발스터디
- mongodb
Archives
- Today
- Total
개발자가 내팔자
[BOJ] 백준 2493 탑 python 본문
https://www.acmicpc.net/problem/2493
2493번: 탑
첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1
www.acmicpc.net
import sys
from collections import deque
count = int(sys.stdin.readline().rstrip())
numbers = list(map(int, sys.stdin.readline().rstrip().split()))
result = deque()
for _ in range(count):
popped = numbers.pop()
is_popped = False
max_index = len(numbers) - 1
for i in range(max_index + 1):
if numbers[max_index - i] > popped:
result.appendleft(max_index - i + 1)
is_popped = True
break
if not is_popped:
result.appendleft(0)
print(*result)
처음에 이렇게 풀고 시간 초과가 되었다.
나는 뒤에서부터 하나씩 pop해서 그걸 뒤에서부터 비교해가면서 index를 저장하려고 했는데
이렇게 하면 O(n^2) 가까이 되면서 시간 초과가 나는 것 같다.
어떻게 할지 고민해보다가..
중간에 작은 것들은 아예 빼버려도 괜찮다는 것을 알게 되었다.
별도의 스택을 이용해서 푸는 문제가 종종 나오기 때문에 앞으로 이런 문제가 나온다면 한 번쯤은 생각해보면 좋겠다.
탑의 높이는 100,000,000으로 나오기 때문에 처음 튜플은 그보다 1 더 큰 숫자를 넣어주었다.
통과한 코드는 아래와 같다.
import sys
from collections import deque
count = int(sys.stdin.readline().rstrip())
numbers = list(map(int, sys.stdin.readline().rstrip().split()))
hash = deque()
hash.append((100000001, 0))
for i, number in enumerate(numbers):
while hash[-1][0] < number:
hash.pop()
print(hash[-1][1], end=' ')
hash.append((number, i + 1))
'Algorithms' 카테고리의 다른 글
[BOJ] 수 정렬하기 3 Python (0) | 2022.05.28 |
---|---|
[BOJ] 2주만에 브론즈5에서 실버1로 승급한 후기 (0) | 2022.05.27 |
[BOJ] 백준 1406 에디터 python (0) | 2022.05.20 |
[BOJ] 백준 2231 분해합 python (0) | 2022.05.19 |
[BOJ] 백준 2292 벌집 python (0) | 2022.05.19 |
Comments