avatar
Published on

Codility - Odd Occurrences in array

Author
  • avatar
    Name
    yceffort

2-2 Odd Occurrences in array

๋ฌธ์ œ

์ˆซ์ž๋กœ ์ด๋ค„์ง„ ๋ฐฐ์—ด์—์„œ ํ™€์ˆ˜ ๋ฒˆ ๋“ฑ์žฅํ•˜๋Š” ์ˆซ์ž๋ฅผ ์ฐพ์•„์„œ ๋ฆฌํ„ดํ•ด๋ผ.

A[0] = 9  A[1] = 3  A[2] = 9
A[3] = 3  A[4] = 9  A[5] = 7
A[6] = 9

7์€ ํ•œ๋ฒˆ๋งŒ ๋“ฑ์žฅํ•˜๋ฏ€๋กœ 7์„ ๋ฆฌํ„ดํ•ด์•ผ ํ•œ๋‹ค.

ํ’€์ด

function solution(A) {
  // ๋“ฑ์žฅํ•˜๋Š” ์ˆซ์ž๋ฅผ ์ €์žฅํ•œ๋‹ค.
  const map = {}

  // ์ˆซ์ž๋ฅผ ์ˆœํšŒํ•œ๋‹ค
  for (let i = 0; i <= A.length - 1; i++) {
    const target = A[i]
    // ํ•ด๋‹น ์ˆซ์ž๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ํ•ด๋‹น ํ‚ค๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.
    if (map[target]) {
      delete map[target]
      // ํ•ด๋‹น ์ˆซ์ž๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด (์ฒ˜์Œ๋“ฑ์žฅํ–ˆ๋‹ค๋ฉด) ์ถ”๊ฐ€ํ•œ๋‹ค.
    } else {
      map[target] = true
    }
  }

  // ๋ฆฌํ„ดํ•œ๋‹ค.
  return +Object.keys(map)[0]
}

ํ•ด์„ค

๋ฏฟ๊ฑฐ๋‚˜ ๋ง๊ฑฐ๋‚˜ ์„ฑ๋Šฅ์€ O(N) or O(N*log(N)) ๊ฐ€ ๋‚˜์™”๋Š”๋ฐ, ์ƒ๊ฐ๋ณด๋‹ค key-value๊ฐ์ฒด์— key๊ฐ’์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ์†๋„๊ฐ€ ๋น ๋ฅธ๋“ฏ.

https://app.codility.com/demo/results/trainingBF4N34-BBK/