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 |
Tags
- 딥러닝
- multi modal
- Sequence data
- Grad-CAM
- Process Mining
- auto encoder
- PM4Py
- OCSVM
- SQL 데이터 분석 첫걸음
- Generative modeling
- 국비지원교육
- 프로세스 마이닝
- Random Undersampling
- XAI
- 병리 AI
- One-Sided Selection
- Meta heuristic
- 거리 기반 이상탐지
- GAN
- Condensed neares neighbor rule
- Gausian Density Estimation
- Fixed Learning
- 밀도 기반 이상탐지
- Inatance segmentation
- Text generation
- Digital Pathology
- Clustering 기반 이상탐지
- Petri net
- Tomek links
- Data Imbalance
Archives
- Today
- Total
Create Opportunities
[알고리즘] 뒤에 있는 큰 수 찾기 본문
Lv. 2
내 풀이 (시간 초과)
def solution(numbers):
answer = []
for i in range(len(numbers)-1):
num = numbers[i]
for j in range(i, len(numbers)):
if numbers[j] > num:
answer.append(numbers[j])
break
if j == len(numbers)-1:
answer.append(-1)
answer.append(-1)
return answer
단순히 for문으로 풀었다.
효율적인 정답 풀이
def solution(numbers):
stack = []
answer = [-1] * len(numbers)
for i in range(len(numbers)):
while stack and numbers[stack[-1]] < numbers[i]: # stack의 top값이 현재 원소보다 작은 경우에는 stack에서 top값을 pop하여, 해당 원소의 뒷 큰수를 찾아서 answer에 추가
answer[stack.pop()] = numbers[i]
stack.append(i)
return answer
stack을 사용하여 푼다. stack은 인덱스를 저장해두는 용도이다.
저장해둔 인덱스의 number와 현재 인덱스의 number를 비교하여 answer를 업데이트한다.
이제 난 stack을 활용할 수 있어야한다.
아래는 그저 나의 이해를 위한..
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
'알고리즘' 카테고리의 다른 글
[알고리즘] Hash, Greedy, Sort (0) | 2023.03.10 |
---|---|
[알고리즘] 개인정보 수집 유효기간 (0) | 2023.03.07 |
[알고리즘] 둘만의 암호 (1) | 2023.03.06 |
[알고리즘] 숫자 변환 (0) | 2023.03.02 |
[알고리즘] 덧칠하기 (0) | 2023.03.02 |