Jieunny์ ๋ธ๋ก๊ทธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๋ค์ ์๋ ํฐ ์ ์ฐพ๊ธฐ ๋ณธ๋ฌธ
๐ ๋ฌธ์
์ ์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด numbers๊ฐ ์์ต๋๋ค. ๋ฐฐ์ด ์ ๊ฐ ์์๋ค์ ๋ํด ์์ ๋ณด๋ค ๋ค์ ์๋ ์ซ์ ์ค์์ ์์ ๋ณด๋ค ํฌ๋ฉด์ ๊ฐ์ฅ ๊ฐ๊น์ด ์๋ ์๋ฅผ ๋ท ํฐ์๋ผ๊ณ ํฉ๋๋ค. ์ ์ ๋ฐฐ์ด numbers๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ชจ๋ ์์์ ๋ํ ๋ท ํฐ์๋ค์ ์ฐจ๋ก๋ก ๋ด์ ๋ฐฐ์ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์. ๋จ, ๋ท ํฐ์๊ฐ ์กด์ฌํ์ง ์๋ ์์๋ -1์ ๋ด์ต๋๋ค.
๐ก ์์ด๋์ด
์ด์ค for๋ฌธ ๋๋ฉด์ ์๊ธฐ๋ณด๋ค ํฐ ์ ๋ฐ๊ฒฌํ๋ฉด answer์ pushํ๊ณ break -> ํ
์ผ 4๊ฐ ์๊ฐ์ด๊ณผ
์ด์ค for๋ฌธ์ ํ๋ฒ์ผ๋ก ์ค์ฌ์ผ ํ ๊ฒ ๊ฐ์๋ฐ..
์คํ์ ์ด์ฉํด์ ํด์ผ๋๋ ๊ฑด ์๊ฒ ๋๋ฐ ์ด๋ป๊ฒ ํด์ผํ ์ง ๋ชฐ๋ผ์ ๊ฒ์ํด๋ดค๋๋ฐ๋ ์ดํด๊ฐ ์๋ฌ๋คใ
ใ
..
๊ทธ๋ฆผ๊น์ง ์ฌ์ฉํด์ ์น์ ํ๊ฒ ์ค๋ช
ํด๋ ๋ธ๋ก๊ทธ๊ฐ ์์ด์ ์ดํด ํ ์ ์์๋ค ๐ฅน
โ๏ธ ํ์ด
// ์๊ฐ์ด๊ณผ ์ฝ๋
function solution(numbers) {
var answer = [];
for(let i=0; i<numbers.length; i++){
let include = false;
for(let j=i; j<numbers.length; j++) {
if(numbers[i] < numbers[j]) {
answer.push(numbers[j]);
include = true;
break;
}
}
if(!include) answer.push(-1);
}
return answer;
}
function solution(numbers) {
var answer = new Array(numbers.length).fill(-1);
const stk = [];
// ์ธ๋ฑ์ค๊ฐ ๋ด๊ธธ ์คํ
for(let i=0; i<numbers.length; i++) {
// numbers ๋ฐฐ์ด์ ๋๋ฉด์
while(stk && numbers[i] > numbers[stk[stk.length-1]]) {
// ์คํ์ด ๋น์ด์์ง ์๊ณ , ํ์ฌ ์คํ์์ ์ ์ผ ์์ ๊ฐ(์ธ๋ฑ์ค)์ ๊บผ๋ด์ค๊ณ ๊ทธ ์ธ๋ฑ์ค์ ๊ฐ๋ณด๋ค ๋น๊ต ๋์์ด ํฌ๋ค๋ฉด
// ๋น๊ต ๋์์ด ๋๋ ๊ฐ์ด ์ ์ผ ๊ฐ๊น์ด ํฐ ๊ฐ!
answer[stk.pop()] = numbers[i];
// ์คํ์์ ์ ์ผ ์์ ๊ฐ(์ธ๋ฑ์ค)์ popํด์ answer์ ์ธ๋ฑ์ค์ ์ ์ผ ๊ฐ๊น์ด ํฐ ๊ฐ์ ๋ฃ์ด์ค๋ค.
}
stk.push(i);
// ์คํ์๋ ํญ์ ์ธ๋ฑ์ค๊ฐ ์ ์ฅ๋จ!!
}
return answer;
}
'Study > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ํ๋ ธ์ด์ ํ (0) | 2023.09.13 |
---|---|
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์ ์ ์ผ๊ฐํ (0) | 2023.09.12 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๋ชจ์์ฌ์ (0) | 2023.07.27 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์ฃผ์๊ฐ๊ฒฉ (0) | 2023.07.27 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์ ํ๋ฒํธ ๋ชฉ๋ก (0) | 2023.07.26 |