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
- 백준 알고리즘
- Lv2
- JS스터디
- 정렬
- 알고리즘 문제풀이
- 우박수열정적분
- 2023카카오블라인드코테
- pccp기출문제
- 과제진행하기
- c++
- solved.ac플래티넘
- DP
- 두원사이의정수쌍
- 최소스패닝트리
- JS
- Lv3
- 비트마스크
- 지도 여러개
- div2개
- 이중지도
- 스택
- 5강클로저
- [pccp 기출문제]
- 코어자바스크립트
- 타겟넘버
- 알고리즘문제풀이
- 프로그래머스
- solved.ac골드
- 백준알고리즘
- React.StrictMode
Archives
- Today
- Total
호지
[프로그래머스] 뒤에 있는 큰 수 찾기 문제풀이 JS 본문
스택을 이용하면 되는 문제이다.
초기값으로 stack에는 0번 index를 저장하고
1번째 index부터 마지막 원소까지 순회를 하면서
stack이 비어있지 않은데, stack에 top인 index의 원소가 현재 원소보다 작다면
stack의 원소를 pop하고 해당 index의 answer를 현재의 numbers로 저장하는 것을 반복한다.
그 후 현재의 index에 대한 큰 수 찾기도 진행되어야 하므로,
현재의 index를 stack에 push한다.
마지막으로 stack에 남아 있는 index들은 큰 수 찾기에 실패한 경우이므로,
해당 index의 answer은 -1로 업데이트 한다.
function solution(numbers) {
let answer = []
let stack = [0]
for (let i = 1; i < numbers.length; i++) {
while (stack.length !== 0 && numbers[stack[stack.length - 1]] < numbers[i]) {
answer[stack.pop()] = numbers[i]
}
stack.push(i)
}
for (let i = 0; i < stack.length; i++) answer[stack[i]] = -1
return answer
}
https://school.programmers.co.kr/learn/courses/30/lessons/154539#
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 가장 큰 수 문제풀이 JS (0) | 2023.09.12 |
---|---|
[프로그래머스] 숫자 변환하기 문제풀이 JS (0) | 2023.09.06 |
[프로그래머스] 호텔 대실 문제풀이 JS (0) | 2023.08.30 |
[프로그래머스] 광물 캐기 문제풀이 JS (0) | 2023.08.29 |
[프로그래머스] 과제 진행하기 문제풀이 JS (0) | 2023.08.28 |
Comments