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
- 과제진행하기
- 스택
- Lv3
- pccp기출문제
- 백준알고리즘
- 이중지도
- solved.ac골드
- JS
- 지도 여러개
- 백준 알고리즘
- 코어자바스크립트
- 최소스패닝트리
- 비트마스크
- 프로그래머스
- [pccp 기출문제]
- Lv2
- 알고리즘 문제풀이
- c++
- JS스터디
- 타겟넘버
- div2개
- React.StrictMode
- 알고리즘문제풀이
- 5강클로저
- solved.ac플래티넘
- 우박수열정적분
- 두원사이의정수쌍
- DP
- 2023카카오블라인드코테
- 정렬
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