๐Ÿงฉ Algorithm/[Programmers] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณ ๋“์  KIT

[Programmers/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณ ๋“์  KIT] ํฌ์ผ“๋ชฌ

devCloud 2026. 3. 18. 15:48

[Programmers] ํฌ์ผ“๋ชฌ

Level 1 | #ํ•ด์‹œ

1. ๋ฌธ์ œ ์š”์•ฝ

N๋งˆ๋ฆฌ์˜ ํฌ์ผ“๋ชฌ ์ค‘์—์„œ N/2๋งˆ๋ฆฌ๋ฅผ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ์ตœ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ํฌ์ผ“๋ชฌ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ด๋‹ค.

ํฌ์ผ“๋ชฌ์˜ ์ข…๋ฅ˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด nums๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ํฌ์ผ“๋ชฌ ์ข…๋ฅ˜ ๊ฐœ์ˆ˜์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

2. ์ ‘๊ทผ ๋ฐฉ์‹ ๋ฐ ํฌ์ธํŠธ

๊ฐ€์žฅ ๋งŽ์€ ์ข…๋ฅ˜๋ฅผ ์„ ํƒํ•˜๋ ค๋ฉด ์ค‘๋ณต๋œ ์ข…๋ฅ˜๋ฅผ ์ œ๊ฑฐํ•œ ๋’ค, ๋‚ด๊ฐ€ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ˆ˜(N/2)์™€ ๋น„๊ตํ•ด์•ผ ํ•œ๋‹ค.

  • โœ… ์ž๋ฃŒ๊ตฌ์กฐ: ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” set์„ ์‚ฌ์šฉํ•˜์—ฌ ํฌ์ผ“๋ชฌ์˜ ์ข…๋ฅ˜๋ฅผ ํŒŒ์•…ํ•œ๋‹ค.
  • โœ… ๋กœ์ง: ํฌ์ผ“๋ชฌ ์ข…๋ฅ˜์˜ ์ˆ˜(len(set(nums)))๊ฐ€ ๋‚ด๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ˆ˜(len(nums) // 2)๋ณด๋‹ค ํฌ๋ฉด N/2๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์ž‘์œผ๋ฉด ์ข…๋ฅ˜์˜ ์ˆ˜๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

3. ๊ตฌํ˜„ ์ฝ”๋“œ (Python)

def solution(nums):
    s = set(nums)   # ์ค‘๋ณต ์ œ๊ฑฐ
    if len(s) > len(nums) // 2:
        return len(nums) // 2
    else:
        return len(s)

๐Ÿ“Œ ์ค‘๋ณต ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•: set()์— ๋‹ด์œผ๋ฉด ์ž๋™์œผ๋กœ ์ค‘๋ณต์ด ์ œ๊ฑฐ๋œ๋‹ค.

๐Ÿ“Œ set์˜ ํŠน์ง•: iterable(๋ฆฌ์ŠคํŠธ, ํŠœํ”Œ ๋“ฑ)์ด๋ฉด ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์›์†Œ๋Š” ๋ฐ˜๋“œ์‹œ hashable(๋ถˆ๋ณ€ ํƒ€์ž…)์ด์–ด์•ผ ํ•œ๋‹ค.

4. ๋ฆฌํŒฉํ† ๋ง - ํ•œ ๋ฒˆ์— ๋ฆฌํ„ด

min() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์กฐ๊ฑด๋ฌธ ์—†์ด ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

def solution(nums):
    return min(len(set(nums)), len(nums) // 2)

ํฌ์ผ“๋ชฌ ์ข…๋ฅ˜์˜ ์ˆ˜์™€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ˆ˜(N/2) ์ค‘์—์„œ ๋” ์ž‘์€ ๊ฐ’์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ๊ณง ๋ฌธ์ œ์˜ ์ •๋‹ต์ด ๋œ๋‹ค. ๊ฐ€๋…์„ฑ๊ณผ ๊ฐ„๊ฒฐํ•จ ๋ฉด์—์„œ ํ›จ์”ฌ ํšจ์œจ์ ์ธ ์ฝ”๋“œ์ด๋‹ค.