728x90
๋ฐ์ํ
https://school.programmers.co.kr/learn/courses/30/lessons/17683
"""
๋ผ๋์ค๋ฅผ ์์ฃผ ๋ฃ๋ ๋ค์ค๋ ๋ผ๋์ค์์ ๋ฐฉ๊ธ ๋์๋ ์์
์ด ๋ฌด์จ ์์
์ธ์ง ๊ถ๊ธํด์ง ๋๊ฐ ๋ง๋ค.
๊ทธ๋ด ๋ ๋ค์ค๋ ๋ค์ ํฌํธ์ '๋ฐฉ๊ธ๊ทธ๊ณก' ์๋น์ค๋ฅผ ์ด์ฉํ๊ณค ํ๋ค.
๋ฐฉ๊ธ๊ทธ๊ณก์์๋ TV, ๋ผ๋์ค ๋ฑ์์ ๋์จ ์์
์ ๊ดํด ์ ๋ชฉ ๋ฑ์ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์๋น์ค์ด๋ค.
(ํ๋ต)
"""
def solution(m, musicinfos):
m = m.replace('A#','a').replace('C#','c').replace('D#','d').replace('F#','f').replace('G#','g')
found = {'time': 0, 'name': '(None)'}
for data in musicinfos:
start, end, name, song = data.split(',')
start_hour, start_min = map(int, start.split(':'))
end_hour, end_min = map(int, end.split(':'))
length = (end_hour-start_hour)*60 + (end_min-start_min)
song = song.replace('A#','a').replace('C#','c').replace('D#','d').replace('F#','f').replace('G#','g')
song = (song*max(1, int(length/len(song))+1))[:length]
if m in song and found['time'] < length:
found = {'time': length, 'name': name}
return found['name']
"""
๋ฌธ์ ๋ฅผ ๋ณด๋๊น ๋ช๊ฐ์ง ํน์ง๋ง ์๊ฐํ๋ฉด ์ฝ๊ฒ ํ๋ฆด๊ฑฐ ๊ฐ๋ค๋ ์๊ฐ์ด์๋ค.
1. #์ด ๋ถ์ ์์ ํ์์ผ๋ก ์ธ์ํด์ฃผ๊ณ ์๊ณ ,
2. ์๊ฐ์ด ๋ ๊ธด ์์
, ๊ฐ๋ค๋ฉด ๋จผ์ ์ฐพ์ ์์
์ ์๋ ค์ค๋ค.
3. ์๊ณก์ ๋ง๋ ์์ด ์์ด๋ ๋ฐฉ์ก์ ๋์จ ์๋ค๋ง ์๊ฐํด์ผํ๋ค.
๋จผ์ #์ด ๋ถ์ ์๋ค์ ์นํ์์ผ์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐพ์์์
์ ๋ํ ์ ๋ณด๋ฅผ ๋ด์ ๋์
๋๋ฆฌ๋ฅผ ์ ์ธํด์ฃผ์๋ค.
musicinfos๋ฅผ ํ๋์ฉ ๊ฐ์ง๊ณ ์จ๋ค. (for๋ฌธ)
data๋ ,์ ๊ธฐ์ค์ผ๋ก ๋๋์ด์ ธ์๋ค๊ณ ํ์ผ๋ฏ๋ก ,์ ๊ธฐ์ค์ผ๋ก ๋๋์ด ์ค๋ค.
์์์๊ฐ๊ณผ ๋์๊ฐ์ ๊ณ์ฐํด ์์ด ๋ค๋ฆฐ ์ด ๊ธธ์ด๋ฅผ ๊ณ์ฐํ๋ค.
๋ฐฉ์ก์์ ๋ค๋ฆฐ ์์ song์ ํตํด ๊ตฌํ๋ค.
song์ ๋จผ์ m๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก #์์ ์นํ์์ผ์ฃผ๊ณ ,
๋ฐฉ์ก์๊ฐ์ ๋ง์ถฐ์ song์ ๊ธธ์ด๋ฅผ ๋๋ ค์ค๋ค.
song = (song*max(1, int(length/len(song))+1))[:length]
์ด ๋ถ๋ถ ์ ๋๋ง ํท๊ฐ๋ฆด ๊ฒ ๊ฐ์๋ฐ song์ ๊ธธ์ด๋ฅผ ์ด๋ป๊ฒ ์ผ๋ง๋ ๋๋ ค์ค์ผ ํ ์ง ๊ณ ๋ฏผํ๋ค.
(๋ฐฉ์ก ๊ธธ์ด/song์ ๊ธธ์ด) + 1 ์ ํ๋ค๋ฉด ์ด๋ ๊ธธ์ด๊น์ง ๋๋ ค์ผ ํ๋์ง ๋์จ๋ค.
์๋ฅผ ๋ค์ด 10๋ถ์ ๋ฐฉ์ก, 3๋ถ์ song์ด๋ผ๋ฉด 10/3์ 3.33 -> 3์ด ๋๋ค.
๊ทธ๋ฌ๋ฉด song*(3+1) = 12๋ถ์ ๊ธธ์ด๊ฐ ๋๋ค.
max(1, ๊ธธ์ด)๋ฅผ ํด์ค ์ด์ ๋ ๋ฐฉ์ก๊ธธ์ด๊ฐ song์ ๊ธธ์ด๋ณด๋ค ์๋ค๋ฉด ์์๊ฐ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐฉ์ก๊ธธ์ด๊ฐ song์ ๊ธธ์ด๋ณด๋ค ์์ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฏ๋ก [:length]๋งํผ ์๋ผ์ฃผ์๋ค.
์ ์ฒ๋ฆฌ๊ฐ ๋ชจ๋ ๋๋ฌ๋ค๋ฉด m์ด song์์ ์๊ณ , ์ฐพ์ ๋
ธ๋์ ๊ธธ์ด๋ณด๋ค ๋ ๊ธธ๋ค๋ฉด
์๋ก์ด ๋
ธ๋๋ฅผ ์ฐพ์๊ฒ์ด๋ฏ๋ก ์ฐพ์๋
ธ๋๋ฅผ ์
๋ฐ์ดํธํด์ค๋ค.
if m in song and found['time'] < length ์ฌ๊ธฐ์ <= ๊ฐ ์๋๋ผ < ์ธ ์ด์ ๋
๋
ธ๋๊ธธ์ด๊ฐ ๊ฐ๋ค๋ฉด ๋จผ์ ์
๋ ฅ๋ ๋
ธ๋๊ฐ ์ ๋ต์ด๊ธฐ ๋๋ฌธ์ด๋ค.
"""
728x90
๋ฐ์ํ
๋๊ธ