OddOccurrencesInArray ๋ฌธ์ ํด๊ฒฐ โ
๋ฌธ์ ์ค๋ช โ
๋ฐฐ์ด A
๊ฐ ์ฃผ์ด์ก์ ๋, ํ ๋ฒ๋ง ๋ฑ์ฅํ๋ ์์๋ฅผ ์ฐพ๋ ๋ฌธ์ ์
๋๋ค.
๋ฐฐ์ด์๋ ์ง์ ์ด๋ฃจ๋ ์ซ์๋ค์ด ์์ผ๋ฉฐ, ๋จ ํ๋์ ์ซ์๋ง ์ง์ด ์์ต๋๋ค.
์ด ์ง์ด ์๋ ์ ์ผํ ์ซ์๋ฅผ ์ฐพ์ ๋ฐํํด์ผ ํฉ๋๋ค.
์์ โ
์
๋ ฅ (A ) | ์ด์ง ํํ | ๊ฒฐ๊ณผ (์ถ๋ ฅ ) |
---|---|---|
[9, 3, 9, 3, 9, 7, 9] | 9-3-9-3-9-7-9 โ 7์ด ์ ์ผํจ | 7 |
[1, 1, 2, 2, 3] | 1-1-2-2-3 โ 3์ด ์ ์ผํจ | 3 |
[42] | 42 โ ์ ์ผํ ์ซ์ | 42 |
ํด๊ฒฐ ๋ฐฉ๋ฒ โ
Set
์ ํ์ฉํ์ฌ ์ค๋ณต์ ์ ๊ฑฐ- Set์ ๊ฐ์ ๊ฐ์ด ๋ค์ด์ค๋ฉด ์ญ์ ํ๋ ํน์ง์ด ์์
- ํ ๋ฒ ๋ฑ์ฅํ ์ซ์๋ Set์ ์ถ๊ฐํ๊ณ , ๋ ๋ฒ์งธ ๋ฑ์ฅํ๋ฉด ์ญ์
- ๋ง์ง๋ง์ ๋จ์ ๊ฐ์ด ์ ์ผํ ์ซ์
์ฝ๋ ๊ตฌํ โ
typescript
function solution(A: number[]): number {
const set = new Set<number>()
for (let element of A) {
if (set.has(element)) set.delete(element) // ์ด๋ฏธ ์กด์ฌํ๋ฉด ์ ๊ฑฐ
else set.add(element) // ์์ผ๋ฉด ์ถ๊ฐ
}
return +Array.from(set.values())[0] // ๋จ์ ํ๋์ ๊ฐ ๋ฐํ
}
์ฝ๋ ์ค๋ช โ
Set
์ ์ด์ฉํ์ฌ ์ง์ด ๋ง๋ ์ซ์๋ ์ ๊ฑฐtypescriptconst set = new Set<number>()
Set
์ ์ค๋ณต์ ํ์ฉํ์ง ์์- ๊ฐ์ ์ซ์๊ฐ ๋ ๋ฒ ๋ฑ์ฅํ๋ฉด ์ญ์
๋ฐฐ์ด์ ์ํํ๋ฉด์
Set
์ ์ ๋ฐ์ดํธtypescriptfor (let element of A) { if (set.has(element)) set.delete(element) else set.add(element) }
- ์ด๋ฏธ ์กด์ฌํ๋ ์ซ์๋ ์ ๊ฑฐ
- ์ฒ์ ๋ฑ์ฅํ๋ ์ซ์๋ ์ถ๊ฐ
๋ง์ง๋ง ๋จ์ ์์ ๋ฐํ
typescriptreturn +Array.from(set.values())[0]
Set
์ ๋จ์ ์ ์ผํ ์ซ์๋ฅผ ๋ฐฐ์ด๋ก ๋ณํํ์ฌ ๋ฐํ
์๊ฐ ๋ณต์ก๋ โ
- ๋ฐฐ์ด ์ํ:
O(N)
- Set ์ถ๊ฐ/์ญ์ : ํ๊ท
O(1)
- ์ต์ข
์๊ฐ ๋ณต์ก๋:
O(N)
โ ๋ฐฐ์ด์ ํ ๋ฒ๋ง ์ํํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ํจ์จ์
์คํ ์์ โ
typescript
console.log(solution([9, 3, 9, 3, 9, 7, 9])) // ์ถ๋ ฅ: 7
console.log(solution([1, 1, 2, 2, 3])) // ์ถ๋ ฅ: 3
console.log(solution([42])) // ์ถ๋ ฅ: 42
์ต์ข ์ ๋ฆฌ โ
โ
Set
์ ํ์ฉํ ์ง ์ ๊ฑฐ ๋ฐฉ์
โ
ํจ์จ์ ์ธ O(N)
ํด๊ฒฐ ๋ฐฉ๋ฒ
โ
์ ์ผํ ์ซ์๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ์
์ด์ ๋จ ํ๋๋ง ์กด์ฌํ๋ ์ซ์๋ฅผ ์ฝ๊ฒ ์ฐพ์ ์ ์์ต๋๋ค! ๐