λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸƒ algorithm/leetcode

LeetCode 406 - Queue Reconstruction by Height (Medium)

by HandHand 2021. 3. 3.

문제

LeetCode - 406번

풀이 κ³Όμ •

각 μ‚¬λžŒλ“€μ˜ ν‚€ h 와 μžμ‹ λ³΄λ‹€ μ•žμ— μ„œμžˆλŠ” μ‚¬λžŒλ“€ 쀑 μžμ‹ λ³΄λ‹€ ν‚€κ°€ 큰 μ‚¬λžŒλ“€μ˜ 수 n 이 μ£Όμ–΄μ§ˆ λ•Œ
쑰건에 λ§žλ„λ‘ μ‚¬λžŒλ“€μ„ λ‚˜μ—΄ν•˜λŠ” 방법을 μ°ΎλŠ” λ¬Έμ œμž…λ‹ˆλ‹€.

λ”°λΌμ„œ μš°μ„  n 의 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜λ©° n 이 같을 κ²½μš°μ—λŠ” h κ°€ μ¦κ°€ν•˜λŠ” 순으둜 μ •λ ¬ν•©λ‹ˆλ‹€.

그리고 μ •λ ¬λœ μ‚¬λžŒλ“€μ„ ν•œλͺ…μ”© μžμ‹ μ˜ μœ„μΉ˜λ₯Ό μ°Ύμ•„ μ‚½μž…ν•΄μ£ΌλŠ” λ°©μ‹μœΌλ‘œ μ§„ν–‰ν•©λ‹ˆλ‹€.
μ΄λ•Œ n 을 λ§Œμ‘±μ‹œν‚€λ©΄μ„œ μ΅œλŒ€ν•œ 뒀에 μœ„μΉ˜ν•˜λ„λ‘ 섀정해주도둝 ν•˜λŠ” νƒμš•μ  선택 을 ν™œμš©ν•©λ‹ˆλ‹€.

μ½”λ“œ

/**
 * @param {number[][]} people
 * @return {number[][]}
 */
var reconstructQueue = function (people) {
  const answer = [];

  people.sort((a, b) => a[1] - b[1] || a[0] - b[0]);

  people.forEach((p) => {
    let count = 0,
      i = 0;
    for (; i < answer.length; i++) {
      if (answer[i][0] >= p[0]) count++;
      if (count > p[1]) break;
    }

    answer.splice(i, 0, p);
  });

  return answer;
};
λ°˜μ‘ν˜•

πŸ’¬ λŒ“κΈ€