🔵문제링크
https://school.programmers.co.kr/learn/courses/30/lessons/131704
🔵내풀이
function solution(order) {
let arr = new Array(order.length).fill(0)
for(let i=0; i<=arr.length-1; ++i){
arr[order[i]-1]=i+1
}
let commingNum = 1
let i =0
let sub = []
while(i<=arr.length-1){
while(true){
if(arr[i]===commingNum){
++commingNum
++i
}else if(sub.length>=1 && sub.at(-1)===commingNum){
sub.pop()
++commingNum
}else{
break
}
}
sub.push(arr[i])
++i
}
return commingNum-1;
}
🔵후기
처음에 삽질을 너무 많이 해서 따로 포스팅하면서 까지 글을 쓴다🙄
첫 시도 시 시간초과가 너무 뜨길래 문제를 쉽게 접근하기 위해서 새로운 어레이를 생성하는 파트를 제거하고 문제에 접근했지만 알고 보니 내가 while break를 잘못 걸어서 시간초과가 난 것 같았다. 굉장히 금방 풀 문제였는데 그거 하나때문에 시간을 굉장히 많이 잡아 먹었다.
내풀의 핵심은 문제를 쉽게 접근하기 위해 새로운 Arr를 생성하는 부분이다.
주어진 어레이의 각각의 원소를 트럭에 들어가는 순서로 바꾸었고 이는 풀이를 굉장히 쉽게 만들었다.
'Javascript' 카테고리의 다른 글
프로그래머스 (JS) > 가장 큰수 (0) | 2024.07.04 |
---|---|
프로그래머스 > 성격 유형 검사하기 (0) | 2024.06.02 |
[JS] base64 img data를 img File 형태로 변경하기 (0) | 2024.05.18 |
[JS] 미리보기 이미지 구현하기 ( FileReader, FileReader.readAsDataURL() 이용 ) (0) | 2024.05.15 |
예외 처리 방법 ( throw, Error 이용 ) (0) | 2023.11.30 |