λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
🧠 μ•Œκ³ λ¦¬μ¦˜

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] 뒀에 μžˆλŠ” 큰 수 μ°ΎκΈ° JS

by megan07 2024. 1. 7.

 

첫 번째 ν’€μ΄λŠ” λ’·ν°μˆ˜κ°€ μžˆλŠ” 경우만 νŒλ³„ν•˜μ—¬
이쀑 포문으둜 μ²˜λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€
2개 정도 μ‹œκ°„μ΄ˆκ³Όκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€


μ‹œκ°„ μ΄ˆκ³Όκ°€ λ°œμƒν•΄μ„œ μ–΄λ–»κ²Œ ν•΄μ•Ό λ°˜λ³΅μ„ 쀄일 수 μžˆμ„κΉŒ κ³ λ―Όν–ˆμŠ΅λ‹ˆλ‹€
생각을 ν•˜λ‹€λ³΄λ‹ˆ μŠ€νƒμ„ 톡해 λ’·ν°μˆ˜λ§Œ μœ μ§€ν•˜λ©΄ λ˜κ² λ‹€λŠ” νŒλ‹¨μ΄ λ“€μ—ˆμŠ΅λ‹ˆλ‹€.
λ’€μ—μ„œλΆ€ν„° 순회λ₯Ό ν•˜λ©΄μ„œ
λ°”λ‘œ 뒀에 μžˆλŠ” μˆ˜μ™€ κ·Έ 수의 λ’·ν°μˆ˜λ“€λ§Œ μŠ€νƒμœΌλ‘œ κ΄€λ¦¬ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν’€μ—ˆμŠ΅λ‹ˆλ‹€

 

function solution(numbers) {
  //λ’€μ—μ„œλΆ€ν„° μˆœνšŒν•˜λ©΄μ„œ
  //μŠ€νƒμ—λŠ” λ°”λ‘œ 뒀에 μžˆλŠ” μˆ˜μ™€ κ·Έ 수의 λ’·ν°μˆ˜λ“€λ§Œ 관리

  const stack = [];
  const result = [];

  //λ’€μ—μ„œλΆ€ν„° 순회
  for (let i = numbers.length - 1; i >= 0; i--) {
    //μŠ€νƒμ΄ 빌 λ•ŒκΉŒμ§€ 반볡
    while (stack.length) {
      //λ°”λ‘œ 뒀에 μžˆλŠ” μˆ˜μ™€ κ·Έ 수의 λ’·ν°μˆ˜
      const current = stack.pop();

      //κ°€μž₯ κ°€κΉŒμ΄ μžˆλŠ” λ’·ν°μˆ˜λ₯Ό λ°œκ²¬ν•˜λ©΄
      //λ’·ν°μˆ˜ λ‹€μ‹œ stack에 λ„£κ³ 
      //반볡문 νƒˆμΆœ
      if (current > numbers[i]) {
        result.push(current);
        stack.push(current);
        break;
      }
    }

    //stack이 λΉ„μ—ˆμœΌλ©΄ λ’·ν°μˆ˜κ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” κ²ƒμ΄λ―€λ‘œ 결과에 -1 μΆ”κ°€
    if (stack.length === 0) result.push(-1);

    //ν˜„μž¬ 수λ₯Ό stack에 μΆ”κ°€
    stack.push(numbers[i]);
  }

  return result.reverse();
}

 

 

λ°‘μ—λŠ” 

μ‹œκ°„ 초과 κ±Έλ Έμ—ˆλ˜ 풀이

function solution(numbers) {
    //λ’€μ—μ„œλΆ€ν„° μˆœνšŒν•˜λ©΄μ„œ
    //μ΅œλŒ€κ°’μ„ μ €μž₯ν•΄λ‚˜κ°
    //λ’·ν°μˆ˜κ°€ 있으면 숫자 λ°”λ‘œ λ’€μ—μ„œλΆ€ν„° 순회
    
    let max = -Infinity;
    const result=[];
    
    for(let i=numbers.length-1;i>=0;i--){
        if(max<=numbers[i]){
            result.push(-1);
            max=numbers[i];
            continue;
        }
        
        for(let j=i+1;j<numbers.length;j++){
            if(numbers[j]>numbers[i]){
                result.push(numbers[j]);
                break;
            }
        }
    }
    
    return result.reverse();
}