ํ๋ฐฐ์์์ ํฌ๊ธฐ๋ ๋ชจ๋ ๊ฐ๊ณ , ์ปจํ ์ด๋ ๋ฒจํธ๋ฅผ ํตํด ์์ฌ์๊ฒ ์์๋๋ก ์ ๋ฌ๋๋ค.
ํ์ง๋ง ์์๋๋ก ํธ๋ญ์ ์ฃ๊ฒ ๋๋ฉด ๋ฐฐ๋ฌ ์์์ ๋ฌ๋ผ ์ฐจ์ง์ด ์๊ธด๋ค.
์๋ฅผ ๋ค๋ฉด ์ปจํ ์ด๋ ๋ฒจํธ์ ๋ฐ์ค๋ 1, 2, 3, 4, 5๋ก ์ค์ง๋ง ํธ๋ญ์ 3, 2, 5, 1, 4๋ก ์ค๋ ค์ผ ํ๋ ๊ฒฝ์ฐ
๋๋ฌธ์ ์์๊ฐ ๋ค๋ฅด๋ฉด ๊ทธ ์์๋ฅผ ์ ์ ๋ค๋ฅธ ์ปจํ ์ด๋ ๋ฒจํธ์ ๋ณด๊ดํด์ผํ๋ค.
(๋ค๋ฅธ ์ปจํ ์ด๋ ๋ฒจํธ๋ ์คํ ๊ตฌ์กฐ๋ก ๋จผ์ ๋ฃ์ ๋ฐ์ค๋ ๊ฐ์ฅ ๋์ค์ ๊บผ๋ผ ์ ์๋ค.)
ํธ๋ญ์ ๋ฐ์ค๋ฅผ ์ค์ ์ ์๋ ์ต๋ ์๋ฅผ ๊ตฌํ๋ผ.
์ ๊ทผ ๋ฐฉ๋ฒ
์์ธ์ฒ๋ฆฌ๋ฅผ ์ ์ ์ฉํ์ฌ ๊ตฌํํ๋ ๋ฌธ์ ์ด๋ค.
์คํ ๊ตฌ์กฐ๋ฅผ ํตํด ์๋ธ ์ปจํ ์ด๋๋ฅผ ๊ตฌํํ๊ณ order์ box๋ฅผ ํ๋์ฉ ์ฒ๋ฆฌํ๋ฉฐ ์งํํ์๋ค.
(box : ํธ๋ญ์ ์๊ตฌ ๋ฐ์ค, subIndex : ํ์ฌ ์ปจํ ์ด๋ ๋ฒจํธ์ ๋๊ธฐ ์ค์ธ ๋ฐ์ค, subContainer : ๋ค๋ฅธ ์ปจํ ์ด๋ ๋ฒจํธ)
1. box > subIndex ์ธ ๊ฒฝ์ฐ
if( box > subIndex ){ while(box !== subIndex){ subContainer.push(subIndex); subIndex++; } }โ
box === subIndex๊ฐ ๋ ๋ ๊น์ง ํ์ฌ ๋ฐ์ค๋ฅผ ๋ค๋ฅธ ์ปจํ ์ด๋ ๋ฒจํธ์ ๋ฃ๊ณ , ๋ค์ ๋ฐ์ค๋ฅผ ๊ฐ์ ธ์จ๋ค.
2. box === subIndex์ธ ๊ฒฝ์ฐif( box === subIndex ){ answer++; subIndex++; continue; }
ํธ๋ญ์ ๋ฐ์ค๋ฅผ ๋ฃ๊ณ ๋ค์ ๋ฐ์ค๋ฅผ ๊ฐ์ ธ์จ๋ค.
3. box === subContainer.pop() ์ธ ๊ฒฝ์ฐ
else if(box === subContainer.pop()){ answer++; continue; }โ
ํธ๋ญ์ ๋ฐ์ค๋ฅผ ์ฃ๊ณ ๋ค์ order์ ์งํํ๋ค.
4. box !== subIndex์ด๊ณ box !== subContainer.pop() ์ธ ๊ฒฝ์ฐ ๋ฃ์ ์ ์๋ ๋ฐ์ค๊ฐ ์์ผ๋ฏ๋ก ๋ฉ์ถ๋ค.
function solution(order) {
var answer = 0;
const subContainer = [];
let subIndex = 1;
for(let i = 0; i < order.length; i++){
const box = order[i];
if( box > subIndex ){
while(box !== subIndex){
subContainer.push(subIndex);
subIndex++;
}
}
if( box === subIndex ){
answer++;
subIndex++;
continue;
}else if(box === subContainer.pop()){
answer++;
continue;
}else break;
}
return answer;
}
'์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript] ์ค์ ๋๋น ๋ชจ์๊ณ ์ฌ 2์ฐจ 2๋ฒ (0) | 2022.07.28 |
---|---|
[Javascript] ์ค์ ๋๋น ๋ชจ์๊ณ ์ฌ 2์ฐจ 1๋ฒ (0) | 2022.07.27 |
[Javascript] ์ค์ ๋๋น ๋ชจ์๊ณ ์ฌ 1์ฐจ 2๋ฒ (0) | 2022.07.13 |
[Javascript] ์ค์ ๋๋น ๋ชจ์๊ณ ์ฌ 1์ฐจ 1๋ฒ (0) | 2022.07.13 |
[Javascript] ์ต์๊ฐ ๋ง๋ค๊ธฐ (12941) (0) | 2022.06.25 |