문제의 설명을 그대로 코드로 옮겨보려고 해봤습니다.
function solution(order) {
let result = 0;
let containerIndex = 0;
let subContainerIndex = -1;
let orderIndex = 0;
const length = order.length;
const container = Array.from({ length }, (_, i) => i + 1);
const subContainer = [];
while (true) {
if (result === length) break;
if (subContainer[subContainerIndex] === order[orderIndex]) {
result += 1;
subContainer.pop();
subContainerIndex -= 1;
orderIndex += 1;
continue;
}
if (container[containerIndex] === order[orderIndex]) {
result += 1;
containerIndex += 1;
orderIndex += 1;
} else {
subContainer.push(container[containerIndex]);
if (subContainerIndex < length) {
subContainerIndex += 1;
}
if (containerIndex < length) {
containerIndex += 1;
}
}
if (
order[orderIndex] < subContainer[subContainerIndex] &&
container[containerIndex] !== order[orderIndex]
) {
break;
}
}
return result;
}
'개발 > 코딩테스트' 카테고리의 다른 글
[백준] 스타트와 링크 - 14889 (0) | 2023.11.25 |
---|---|
[백준] 블랙잭 - 2798 (0) | 2023.11.23 |
[프로그래머스] [3차] n진수 게임 (1) | 2023.11.13 |
[프로그래머스] 이진 변환 반복하기 (0) | 2023.11.10 |
[프로그래머스] 뒤에 있는 큰 수 찾기 (0) | 2023.11.09 |