๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐Ÿ’ก/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํฐ์ผ“๋ชฌ python

by @ENFJ 2024. 6. 11.

 

https://school.programmers.co.kr/learn/courses/30/lessons/1845

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

def solution(nums):
    # ํฌ์ผ“๋ชฌ์˜ ์ข…๋ฅ˜์ด ์ˆ˜๋ฅผ ์„ผ๋‹ค.
    unique_types = len(set(nums))
    # ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋งˆ๋ฆฌ์˜ ์ˆ˜๋Š” N/2 ์ž…๋‹ˆ๋‹ค.
    max_selectable = len(nums)/2
    
    # ์ตœ๋Œ€๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ํฌ์ผ“๋ชฌ ์ข…๋ฅ˜์˜ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    return min(unique_types,max_selectable)
    
    # ์˜ˆ์ œ ํ…Œ์ŠคํŠธ
print(solution([3, 1, 2, 3]))  # ์ถœ๋ ฅ: 2
print(solution([3, 3, 3, 2, 2, 4]))  # ์ถœ๋ ฅ: 3
print(solution([3, 3, 3, 2, 2, 2]))  # ์ถœ๋ ฅ: 2

 

1. ์ค‘๋ณต ์ œ๊ฑฐ :

 set(nums) ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ nums ์—์„œ ์ค‘๋ณต๋œ ํฌ์ผ“๋ชฌ ๋ฒˆํ˜ธ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

set() ์€ ํ•ด์‹œ ํ…Œ์ด๋ธ” ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ค‘๋ณต ์ œ๊ฑฐ๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

[3, 3, 3, 2, 2, 4]  ์ผ ๊ฒฝ์šฐ set ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 3 2 4 ๊ฐ€ ๋˜๋Š”๊ฑฐ์ฃ .

๊ทธ๋ž˜์„œ len() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด 3!

 

unique_types ๋Š” ๊ณ ์œ ํ•œ ํฌ์ผ“๋ชฌ ์ข…๋ฅ˜์˜ ์ˆ˜๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

2. ์ตœ๋Œ€ ์„ ํƒ ๊ฐ€๋Šฅ ์ˆ˜ ๊ณ„์‚ฐ

max_selectable = len(nums) // 2 ๋ฅผ ํ†ตํ•ด ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํฌ์ผ“๋ชฌ ๋งˆ๋ฆฌ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

 

3. ์ตœ๋Œ€ ์ข…๋ฅ˜ ๋ฐ˜ํ™˜

๋ฌธ์ œ์—์„œ ์›ํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ์ธ ์ตœ๋Œ€ ์ข…๋ฅ˜์˜ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ ํ•˜๋Š”๊ฑฐ์ฃ .

min(unique_types, max_selectable)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ์œ ํ•œ ํฐ์ผ“๋ชฌ ์ข…๋ฅ˜์˜ ์ˆ˜์™€ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋งˆ๋ฆฌ ์ˆ˜ ์ค‘ ์ž‘์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ํฐ์ผ“๋ชฌ์„ ์ตœ๋Œ€ํ•œ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.