250x250
Link
๋‚˜์˜ GitHub Contribution ๊ทธ๋ž˜ํ”„
Loading data ...
Notice
Recent Posts
Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Data Science LAB

[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต level2 (๊ทค๊ณ ๋ฅด๊ธฐ) ๋ณธ๋ฌธ

๐Ÿ“ Coding Test/Programmers

[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต level2 (๊ทค๊ณ ๋ฅด๊ธฐ)

ใ…… ใ…œ ใ…” ใ…‡ 2022. 12. 5. 02:45
728x90

1. ๋ฌธ์ œ ์„ค๋ช…

๊ฒฝํ™”๋Š” ๊ณผ์ˆ˜์›์—์„œ ๊ทค์„ ์ˆ˜ํ™•ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฝํ™”๋Š” ์ˆ˜ํ™•ํ•œ ๊ทค ์ค‘ 'k'๊ฐœ๋ฅผ ๊ณจ๋ผ ์ƒ์ž ํ•˜๋‚˜์— ๋‹ด์•„ ํŒ๋งคํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ˆ˜ํ™•ํ•œ ๊ทค์˜ ํฌ๊ธฐ๊ฐ€ ์ผ์ •ํ•˜์ง€ ์•Š์•„ ๋ณด๊ธฐ์— ์ข‹์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•œ ๊ฒฝํ™”๋Š” ๊ทค์„ ํฌ๊ธฐ๋ณ„๋กœ ๋ถ„๋ฅ˜ํ–ˆ์„ ๋•Œ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฒฝํ™”๊ฐ€ ์ˆ˜ํ™•ํ•œ ๊ทค 8๊ฐœ์˜ ํฌ๊ธฐ๊ฐ€ [1, 3, 2, 5, 4, 5, 2, 3] ์ด๋ผ๊ณ  ํ•ฉ์‹œ๋‹ค. ๊ฒฝํ™”๊ฐ€ ๊ทค 6๊ฐœ๋ฅผ ํŒ๋งคํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ํฌ๊ธฐ๊ฐ€ 1, 4์ธ ๊ทค์„ ์ œ์™ธํ•œ ์—ฌ์„ฏ ๊ฐœ์˜ ๊ทค์„ ์ƒ์ž์— ๋‹ด์œผ๋ฉด, ๊ทค์˜ ํฌ๊ธฐ์˜ ์ข…๋ฅ˜๊ฐ€ 2, 3, 5๋กœ ์ด 3๊ฐ€์ง€๊ฐ€ ๋˜๋ฉฐ ์ด๋•Œ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜๊ฐ€ ์ตœ์†Œ์ผ ๋•Œ์ž…๋‹ˆ๋‹ค.

๊ฒฝํ™”๊ฐ€ ํ•œ ์ƒ์ž์— ๋‹ด์œผ๋ ค๋Š” ๊ทค์˜ ๊ฐœ์ˆ˜ k์™€ ๊ทค์˜ ํฌ๊ธฐ๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด tangerine์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๊ฒฝํ™”๊ฐ€ ๊ทค k๊ฐœ๋ฅผ ๊ณ ๋ฅผ ๋•Œ ํฌ๊ธฐ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

 

 

 

 

2. ์ œํ•œ ์‚ฌํ•ญ

  • 1 ≤ k  tangerine์˜ ๊ธธ์ด ≤ 100,000
  • 1 ≤ tangerine์˜ ์›์†Œ ≤ 10,000,000

 

 

 

 

 

3. ๋‚ด ํ’€์ด

from collections import Counter
def solution(k, tangerine):
    count_list = Counter(tangerine)
    tangerine=sorted(tangerine,key=lambda x : (count_list[x],x),reverse=True)
    return len(set(tangerine[:k]))

 

1. Counter ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ count

2. sorted()ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด count_list์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์€ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ, ๋‘๋ฒˆ์งธ key๋Š” x๋กœ ์„ค์ •

3. set()ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด k๋ฒˆ์งธ ์š”์†Œ ์ค‘ ์ค‘๋ณต ์ œ๊ฑฐ ํ›„ ๊ฐœ์ˆ˜ ์นด์šดํŠธํ•˜์—ฌ ๋ฐ˜ํ™˜ 

โ—๏ธlist.count(x)๋กœ๋„ ์ •๋ ฌ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์‹œ๊ฐ„์ด ๋” ์˜ค๋ž˜๊ฑธ๋ ค ์‹œ๊ฐ„ ์ดˆ๊ณผ

 

 

 

 

4. ๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด

import collections
def solution(k, tangerine):
    answer = 0
    cnt = collections.Counter(tangerine)

    for v in sorted(cnt.values(), reverse = True):
        k -= v
        answer += 1
        if k <= 0:
            break
    return answer

 

1. counter()ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ์˜ ๊ฐœ์ˆ˜ ์นด์šดํŠธ

2. ์นด์šดํŠธ๋œ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ for๋ฌธ์„ ์‚ฌ์šฉํ•ด k์—์„œ ๋”•์…”๋„ˆ๋ฆฌ์˜ value๊ฐ’๋งŒํผ ๋นผ์คŒ, answer์€ +1

3. k๊ฐ€ 0๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ์ž‘์•„์ง€๋ฉด break ํ›„ answer ๋ฐ˜ํ™˜

 

 

 

 

 

 

 

728x90
Comments