728x90
๋ฐ์ํ
https://school.programmers.co.kr/learn/courses/30/lessons/258712
def solution(friends, gifts):
history = {name: {'friends': {k: 0 for k in friends}, 'score': 0} for name in friends}
next_month_gift = {name: 0 for name in friends}
for gift in gifts:
give, get = gift.split()
history[give]['friends'][get] += 1
history[give]['score'] += 1
history[get]['friends'][give] -= 1
history[get]['score'] -= 1
for name in history.keys():
for fname, fscore in history[name]['friends'].items():
if fscore > 0 or (fscore == 0 and history[name]['score'] > history[fname]['score']):
next_month_gift[name] += 1
return max(next_month_gift.values())
<ํ์ด>
history = {name: {'friends': {k: 0 for k in friends}, 'score': 0} for name in friends}
next_month_gift = {name: 0 for name in friends}
'''
์ฌ๋๋ง๋ค ์น๊ตฌ๋ค์ ์ด๋ฆ๊ณผ ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ ๊ฐ์, ์ ๋ฌผ์ง์๋ฅผ ์ ์ ๋์
๋๋ฆฌ๋ฅผ ๋ง๋ค์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์๋ฌ์ ๋ฐ์ ์ ๋ฌผ์ ๊ฐ์๋ฅผ ์ ์ฅํ ๋์
๋๋ฆฌ๋ ๋ง๋ค์๋ค.
'''
for gift in gifts:
give, get = gift.split()
history[give]['friends'][get] += 1
history[give]['score'] += 1
history[get]['friends'][give] -= 1
history[get]['score'] -= 1
'''
์ ๋ฌผ์ ๋ณด๋ฆฌ์คํธ๋ฅผ for๋ฌธ์ผ๋ก ๋๋ฉด์
์ ๋ฌผ์ ์ค์ฌ๋(give)๊ณผ ๋ฐ์์ฌ๋(get)์ ๊ตฌ๋ถ์์ผ์ฃผ์๊ณ ,
๊ธฐ๋ก์์ ์ ๋ฌผ์ ์ค์ฌ๋๊ณผ ๋ฐ์์ฌ๋์ ๊ด๊ณ์์ +๋ฅผ ํด์ฃผ์๊ณ ,
์ ๋ฌผ์ ์ค์ฌ๋์ ์ ๋ฌผ์ง์(score)๋ฅผ + ํด์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ ๋ฌผ์ ๋ฐ์ ์ฌ๋์ ์ ๋ฌผ์ ์ค ์ฌ๋๊ณผ์ ๊ด๊ณ์์ -๋ฅผ ํด์ฃผ์๊ณ ,
์ ๋ฌผ์ ๋ฐ์์ฌ๋์ ์ ๋ฌผ์ง์๋ฅผ - ํด์ฃผ์๋ค.
๋๋ช
์ ๊ด๊ณ์์ ๋ ๋ง์ด ์ค์ฌ๋์ด ๋ค์๋ฌ์ ์ ๋ฌผ์ ๋ฐ๊ธฐ ๋๋ฌธ์ ๊ธฐ๋กํด์ฃผ์๊ณ ,
์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ ํ์๊ฐ ๊ฐ๋ค๋ฉด ์ ๋ฌผ์ง์๋ฅผ ๋น๊ตํด์ผํ๊ธฐ ๋๋ฌธ์ ๊ธฐ๋กํด์ฃผ์๋ค.
'''
for name in history.keys():
for fname, fscore in history[name]['friends'].items():
if fscore > 0 or (fscore == 0 and history[name]['score'] > history[fname]['score']):
next_month_gift[name] += 1
return max(next_month_gift.values())
'''
๊ธฐ๋ก๋ค์ ์ ๋ถ ๋๋ฉด์, ์ฌ๋๋ง๋ค ์น๊ตฌ๋ค์ ๊ด๊ณ๋ฅผ ๋น๊ตํ์ฌ for๋ฌธ์ ๋์๋ค.
์น๊ตฌ์๊ฒ ์ค ์ ๋ฌผํ์๊ฐ ๋ ๋ง๊ฑฐ๋ (fscore > 0),
์ ๋ฌผํ์๊ฐ ๋์ ์ด๊ณ , ๊ทธ ์น๊ตฌ์ ์ ๋ฌผ์ง์๋ณด๋ค ์ ์๊ฐ ๋๋ค๋ฉด
(fscore == 0 and history[name]['score'] > history[fname]['score'])
๋ค์๋ฌ์ ์ ๋ฌผ๋ฐ์ ํ์๋ฅผ 1 ์ฆ๊ฐ์์ผ์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์๋ฌ์ ์ ๋ฌผ๋ฐ์ ์ ์ค ๊ฐ์ฅ ํฐ๊ฐ์ ๋ฆฌํด์์ผ์ฃผ์๋ค.
'''
728x90
๋ฐ์ํ
๋๊ธ