Jieunny์˜ ๋ธ”๋กœ๊ทธ

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋’ค์— ์žˆ๋Š” ํฐ ์ˆ˜ ์ฐพ๊ธฐ ๋ณธ๋ฌธ

Study/Coding Test

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋’ค์— ์žˆ๋Š” ํฐ ์ˆ˜ ์ฐพ๊ธฐ

Jieunny 2023. 8. 22. 16:21

๐Ÿ“Œ  ๋ฌธ์ œ

์ •์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด numbers๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด ์˜ ๊ฐ ์›์†Œ๋“ค์— ๋Œ€ํ•ด ์ž์‹ ๋ณด๋‹ค ๋’ค์— ์žˆ๋Š” ์ˆซ์ž ์ค‘์—์„œ ์ž์‹ ๋ณด๋‹ค ํฌ๋ฉด์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์ด ์žˆ๋Š” ์ˆ˜๋ฅผ ๋’ท ํฐ์ˆ˜๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ •์ˆ˜ ๋ฐฐ์—ด numbers๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋ชจ๋“  ์›์†Œ์— ๋Œ€ํ•œ ๋’ท ํฐ์ˆ˜๋“ค์„ ์ฐจ๋ก€๋กœ ๋‹ด์€ ๋ฐฐ์—ด์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ๋‹จ, ๋’ท ํฐ์ˆ˜๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์›์†Œ๋Š” -1์„ ๋‹ด์Šต๋‹ˆ๋‹ค.

 

๐Ÿ’ก  ์•„์ด๋””์–ด

์ด์ค‘ for๋ฌธ ๋Œ๋ฉด์„œ ์ž๊ธฐ๋ณด๋‹ค ํฐ ์ˆ˜ ๋ฐœ๊ฒฌํ•˜๋ฉด answer์— pushํ•˜๊ณ  break -> ํ…Œ์ผ€ 4๊ฐœ ์‹œ๊ฐ„์ดˆ๊ณผ
์ด์ค‘ for๋ฌธ์„ ํ•œ๋ฒˆ์œผ๋กœ ์ค„์—ฌ์•ผ ํ•  ๊ฒƒ ๊ฐ™์€๋ฐ..
์Šคํƒ์„ ์ด์šฉํ•ด์„œ ํ•ด์•ผ๋˜๋Š” ๊ฑด ์•Œ๊ฒ ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ๋ชฐ๋ผ์„œ ๊ฒ€์ƒ‰ํ•ด๋ดค๋Š”๋ฐ๋„ ์ดํ•ด๊ฐ€ ์•ˆ๋ฌ๋‹คใ… ใ… ..
๊ทธ๋ฆผ๊นŒ์ง€ ์‚ฌ์šฉํ•ด์„œ ์นœ์ ˆํ•˜๊ฒŒ ์„ค๋ช…ํ•ด๋‘” ๋ธ”๋กœ๊ทธ๊ฐ€ ์žˆ์–ด์„œ ์ดํ•ด ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค ๐Ÿฅน

์ถœ์ฒ˜ : https://sasca37.tistory.com/306#google_vignette

โœ๏ธ  ํ’€์ด

// ์‹œ๊ฐ„์ดˆ๊ณผ ์ฝ”๋“œ

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;
}