๐Ÿงฉ Algorithm/[Programmers] Level 1

[Programmers] L1. ์ถ”์–ต ์ ์ˆ˜ (Python)

devCloud 2024. 11. 16. 14:15
728x90

[๋ฌธ์ œ ๋งํฌ] ๐Ÿ‘‡

 

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

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr


ํ’€์ด ๋ฐฉ๋ฒ•

photo ์—์„œ ํ•œ ํ–‰์”ฉ ๊บผ๋‚ด๊ณ , ํ•ด๋‹น ํ–‰์˜ ์—ด์„ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ ์ด๋ฆ„ ๋ฆฌ์ŠคํŠธ์— ์ด๋ฆ„์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ ์ˆ˜์— ๋ˆ„์ ์‹œํ‚จ๋‹ค.

ํ•œ ํ–‰์„ ๋‹ค ๋Œ์•˜์œผ๋ฉด ์ ์ˆ˜๋ฅผ ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•œ๋‹ค.

 

Solution

def solution(name, yearning, photo):
    answer = []
    for i in photo:
        score = 0
        for j in i:
            if j in name:  # ํ•ด๋‹น ์ด๋ฆ„์ด ์žˆ๋Š” ๊ฒฝ์šฐ
                score += yearning[name.index(j)]
        answer.append(score)
    return answer

 

ํ˜„์žฌ ์ฝ”๋“œ๋Š” name.index(j)๋ฅผ ํ†ตํ•ด ๋ฆฌ์ŠคํŠธ์—์„œ ์ด๋ฆ„์˜ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ๋Š”๋ฐ, ๋ฆฌ์ŠคํŠธ ๊ฒ€์ƒ‰์ด ๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์–ด ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ, photo์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋‹ค.

 

๊ฐœ์„ ํ•  ์ 

  • ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰ ์‹œ๊ฐ„ ๋‹จ์ถ•
    ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งค๋ฒˆ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š๊ณ , name๊ณผ yearning์„ ๋งคํ•‘ํ•œ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฒ€์ƒ‰ ์‹œ๊ฐ„์ด ์ƒ์ˆ˜ ์‹œ๊ฐ„(O(1))์œผ๋กœ ์ค„์–ด๋“ ๋‹ค.
  • ์ฝ”๋“œ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ
    ๋ณ€์ˆ˜๋ฅผ ์ ์ ˆํžˆ ๋„ค์ด๋ฐํ•˜๊ณ  ๋ฐ˜๋ณต๋ฌธ์„ ๊ฐ„์†Œํ™”ํ•˜๋ฉด ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์ง„๋‹ค.

๊ฐœ์„ ๋œ ์ฝ”๋“œ

def solution(name, yearning, photo):
    # ์ด๋ฆ„๊ณผ ๊ทธ๋ฆฌ์›€ ์ ์ˆ˜๋ฅผ ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๋งคํ•‘
    yearning_dict = dict(zip(name, yearning))
    
    answer = []
    for people in photo:
        # ๊ฐ ์‚ฌ์ง„ ์† ์ธ๋ฌผ์˜ ์ ์ˆ˜๋ฅผ ๊ณ„์‚ฐ
        score = sum(yearning_dict.get(person, 0) for person in people)
        answer.append(score)
    
    return answer

 

์‹œ๊ฐ„ ๋ณต์žก๋„

  • ๊ธฐ์กด ์ฝ”๋“œ
    • photo์˜ ๊ฐ ์‚ฌ์ง„๋งˆ๋‹ค j in name๊ณผ name.index(j)๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ์ตœ์•…์˜ ๊ฒฝ์šฐ O(N * M * K) (N: photo ๊ธธ์ด, M: ์‚ฌ์ง„ ์† ์ด๋ฆ„ ์ˆ˜, K: name ๊ธธ์ด).
  • ๊ฐœ์„  ์ฝ”๋“œ
    • ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ์ˆ˜ ์กฐํšŒ๊ฐ€ O(1)์ด ๋˜๋ฏ€๋กœ, ์ „์ฒด ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N * M).

 

dict.get()

๋”•์…”๋„ˆ๋ฆฌ์—์„œ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ‚ค๋ฅผ ์กฐํšŒํ•  ๋•Œ ๊ธฐ๋ณธ๊ฐ’(์—ฌ๊ธฐ์„œ๋Š” 0)์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์„ค์ •ํ•˜์—ฌ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ„์†Œํ™”ํ•œ๋‹ค.


 

728x90