find key

μ»΅ 돌리기 κ²Œμž„

문제

μ„Έ 개의 λ’€μ§‘νžŒ μ»΅ 쀑 ν•œ 개의 μ»΅ μ•ˆμ— μ—΄μ‡ κ°€ μžˆμŠ΅λ‹ˆλ‹€. 당신이 μ—΄μ‡ λ₯Ό μ°ΎκΈ° μœ„ν•΄ 컡을 λ“€μ–΄μ˜¬λ¦¬λ €λŠ” μˆœκ°„, Drogon이 λΉ λ₯΄κ²Œ 컡의 μœ„μΉ˜λ₯Ό λ’€μ„žκΈ° μ‹œμž‘ν•©λ‹ˆλ‹€. 컡의 κ΅ν™˜μ΄ 끝났을 λ•Œ, μ—΄μ‡ κ°€ λ“€μ–΄μžˆλŠ” 컡을 μ°Ύμ•„μ•Ό ν•©λ‹ˆλ‹€.

  • 컡의 μœ„μΉ˜λŠ” 인덱슀둜 ν‘œν˜„λ©λ‹ˆλ‹€. (0λΆ€ν„° μ‹œμž‘)

  • ν‚€κ°€ λ“€μ–΄μžˆλŠ” 컡의 μΈλ±μŠ€μ™€ κ΅ν™˜λœ 컡의 인덱슀λ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ°°μ—΄(swaps)을 μž…λ ₯으둜 λ°›μŠ΅λ‹ˆλ‹€.

예λ₯Όλ“€μ–΄, μ—΄μ‡ κ°€ λ“€μ–΄μžˆλŠ” 컡의 처음 μœ„μΉ˜κ°€ 0이고 컡이 κ΅ν™˜λ˜λŠ” μˆœμ„œκ°€ λ‹€μŒκ³Ό κ°™λ‹€λ©΄ [(0, 1), (1, 2), (1, 0)]

  • 첫 κ΅ν™˜λ•Œ μ—΄μ‡ κ°€ μžˆλŠ” 컡은 0 μ—μ„œ 1둜 μ΄λ™ν•˜κ²Œ λ©λ‹ˆλ‹€.

  • λ‘λ²ˆμ§Έ κ΅ν™˜λ•Œ μ—΄μ‡ κ°€ μžˆλŠ” 컡은 1 μ—μ„œ 2둜 μ΄λ™ν•˜κ²Œ λ©λ‹ˆλ‹€.

  • λ§ˆμ§€λ§‰ κ΅ν™˜λ•Œ 1에 μžˆλŠ” 컡이 0으둜 κ°€μ§€λ§Œ, μ—΄μ‡ κ°€ μžˆλŠ” μ»΅μ—λŠ” 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

  • λ”°λΌμ„œ μ—΄μ‡ κ°€ μžˆλŠ” 컡의 μœ„μΉ˜λŠ” 2κ°€ λ©λ‹ˆλ‹€.

swaps = [[0, 1], [1, 2], [1, 0]] firstPosition = 0 findKey(firstPosition, swaps) == 2

컡의 κ°―μˆ˜λŠ” μ΅œμ†Œν•œ 두 개 μ΄μƒμž…λ‹ˆλ‹€.

/*
* @param {number} start
* @param {number[]} swaps
* @return {number}
*/

findKey (start, swaps){
    //code
}

문제 이해

첫번째 μΈμžλŠ” μ—΄μ‡ μ˜ μœ„μΉ˜μ΄λ‹€. λ‘λ²ˆμ§Έ 인자둜 λ“€μ–΄μ˜¨ λ°°μ—΄μ•ˆμ˜ λ°°μ—΄μ—μ„œ μ—΄μ‡ μ˜ μœ„μΉ˜λ₯Ό μ°Ύκ³  -> λ°”λ€μœ„μΉ˜λ₯Ό κΈ°μ–΅ -> μ—΄μ‡  좔적 -> 바뀐 μœ„μΉ˜κ°€ μžˆμ„ μ‹œ κΈ°μ–΅ ->.. λ‘λ²ˆμ§Έ μΈμžκ°€ 끝날 λ•Œ κΉŒμ§€ μΆ”μ ν•œλ‹€!

ν•΄κ²° 방법

  1. start 인자의 값을 κ°€μ§„ 배열을 μ°ΎλŠ”λ‹€.

  2. 같은 숫자인 μΈλ±μŠ€κ°€ 0이면 인덱슀 1의 숫자λ₯Ό λ³€μˆ˜μ— λ‹΄λŠ”λ‹€. 인덱슀 1의 μˆ«μžμ™€ κ°™λ‹€λ©΄ 인덱슀2의 μˆ«μžμ— λ³€μˆ˜μ— λ‹΄λŠ”λ‹€.

  3. swaps의 배열을 총 λ‹€ λŒμ•˜λ‹€λ©΄ λ§ˆμ§€λ§‰μœΌλ‘œ 담은 숫자λ₯Ό return ν•΄μ€€λ‹€.

μ½”λ“œ κ΅¬ν˜„

function findKey (start, swaps){
  // Complete the findKey function.
  let position = start;
  const startIdx = 0;
  const endIdx = 1;

  swaps.forEach(cup => {

    //첫번째 μœ„μΉ˜μ™€ λ‘λ²ˆμ§Έμœ„μΉ˜μ— μ΄λ™ν•œ μˆ«μžμ™€ μΌμΉ˜ν•˜λŠ”μ§€ νŒλ³„ 
    if (cup[startIdx] === position) {
      position = cup[endIdx];
    } else if (cup[endIdx] === position) {
      position = cup[startIdx];
    }

  });
  return position;
}

κ²°κ³Ό 뢄석

ν…ŒμŠ€νŠΈ 톡과

startIdx 와 endIdx λ³€μˆ˜λ₯Ό ꡳ이 λ§Œλ“€ ν•„μš” μ—†λ‹€λŠ” ν”Όλ“œλ°±μ„ λ°›μ•˜μŠ΅λ‹ˆλ‹€.

:white_check_mark: ν•˜λ“œμ½”λ”©μ„ μ•ˆν•˜κΈ° μœ„ν•΄ λ³€μˆ˜λ₯Ό λ‹΄κ²Œ λ˜μ—ˆμ§€λ§Œ 0κ³Ό 1μ΄λΌλŠ” λΆ„λͺ…ν•œ 값은 직접 μž…λ ₯ν•˜λŠ”κ²Œ 더 λ‚«λ‹€.

Last updated

Was this helpful?