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
- segmenation map generation
- transformer
- video generation
- style align
- VirtualTryON
- 프로그래머스
- visiontransformer
- DP
- 3d generation
- Vit
- diffusion models
- diffusion model
- magdiff
- Python
- controllable video generation
- 코테
- score distillation
- 네이버 부스트캠프 ai tech 6기
- dreammotion
- controlnext
- segmentation map
- image editing
- 코딩테스트
- 논문리뷰
- BOJ
- 3d editing
- diffusion
- video editing
- Programmers
- emerdiff
Archives
- Today
- Total
평범한 필기장
[Programmers_Python] 뒤에 있는 큰 수 찾기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/154539
내 풀이 방식 & 코드
맨 앞에 있는 수부터 탐색해서 그 수보다 큰 수가 나오면 그 수를 answer에 넣고 break하고, 안나요면 -1을 넣는다. 그렇게 모든 수를 탐색하면 정답은 나온다. 하지만 이중 for문을 이용하다보니 시간초과가 나온다.
def solution(numbers):
answer = []
for i in range(len(numbers)-1):
num = -1
for j in range(i+1,len(numbers)):
if numbers[i] < numbers[j]:
num = numbers[j]
break
answer.append(num)
answer.append(-1)
return answer
정답 코드
stack 자료구조를 이용한다.
- numbers의 길이만큼 반복한다.
- stack에는 인덱스를 넣어준다.
- 만약 스택의 마지막에 있는 인덱스에 해당하는 수(numbers[stack[-1]])가 현재 인덱스에 해당하는 수(numbers[i])보다 작으면 스택에서 인덱스를 하나 씩 pop해서 그 인덱스에 해당하는 인덱스의 answer에 number[i]를 넣는다.
3에 해당하는 내용이 number[i]가 바로 뒤 큰 수를 의미하게 된다. 그래서 stack에서 인덱스를 하나씩 꺼내보면서 number[i]가 뒤 큰 수이면 해당 인덱스의 answer에 넣어준다. 그리고 뒤 큰 수를 못 구한 인덱스는 저장해 두고, 구하게 되면 그 인덱스는 없애야하기 때문에 stack 자료구조를 이용했다.
def solution(numbers):
stack = []
answer = [-1] * len(numbers)
for i in range(len(numbers)):
while stack and numbers[stack[-1]] < numbers[i]:
answer[stack.pop()] = numbers[i]
stack.append(i)
return answer
내 풀이과정에서 시간초과가 나고 정답 풀이처럼 stack을 이용하면 되지 않을까해서 해봤지만 제대로 구현해내지 못했다,,, 그래서 다른분들의 정답 풀이를 참고해서 해결했지만 다음에 이러한 유형의 문제를 풀게되면 내가 해결할 수 있을지 의문이다,,
'코딩 테스트 준비 > Programmers' 카테고리의 다른 글
[Programmers_Python] 다리를 지나는 트럭 (0) | 2023.05.02 |
---|---|
[Programmers_Python] 가장 큰 수 (0) | 2023.04.27 |
[Programmers_Python] 2개 이하로 다른 비트 (0) | 2023.04.04 |
[Programmers_Python] 위장 (0) | 2023.03.31 |
[Programmers_Python] 뉴스 클러스터링 (0) | 2023.03.30 |