[๋ฌธ์ ๋งํฌ] ๐
ํ๋ก๊ทธ๋๋จธ์ค
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)์ ๋ฐํํ๋๋ก ์ค์ ํ์ฌ ์์ธ ์ฒ๋ฆฌ๋ฅผ ๊ฐ์ํํ๋ค.
'๐งฉ Algorithm > [Programmers] Level 1' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Programmers] L1. ์นด๋ ๋ญ์น (Python) (2) | 2024.11.16 |
|---|---|
| [Programmers] L1. [1์ฐจ] ๋น๋ฐ์ง๋ (Python) (1) | 2024.11.12 |
| [Programmers] L1. ํธ๋ ํ์ดํธ ๋ํ (Python) (0) | 2024.11.11 |
| [Programmers] L1. ์ฝ๋ผ ๋ฌธ์ (Python) (0) | 2024.11.07 |
| [Programmers] L1. ๋ชจ์๊ณ ์ฌ (์์ ํ์/Python) (0) | 2024.11.06 |