[programmers] [3μ°¨] λ°©κΈκ·Έκ³‘ - 2018 KAKAO BLIND RECRUITMENT
μ½λ© ν μ€νΈ μ°μ΅ - 2018 KAKAO BLIND RECRUITMENT
<[3μ°¨] λ°©κΈ κ·Έ 곑>
λ¬Έμ μ€λͺ
λΌλμ€λ₯Ό μμ£Ό λ£λ λ€μ€λ λΌλμ€μμ λ°©κΈ λμλ μμ μ΄ λ¬΄μ¨ μμ μΈμ§ κΆκΈν΄μ§ λκ° λ§λ€. κ·Έλ΄ λ λ€μ€λ λ€μ ν¬νΈμ 'λ°©κΈ κ·Έ 곑' μλΉμ€λ₯Ό μ΄μ©νκ³€ νλ€. λ°©κΈ κ·Έ 곑μμλ TV, λΌλμ€ λ±μμ λμ¨ μμ μ κ΄ν΄ μ λͺ© λ±μ μ 보λ₯Ό μ 곡νλ μλΉμ€μ΄λ€.
λ€μ€λ μμ μ΄ κΈ°μ΅ν λ©λ‘λλ₯Ό κ°μ§κ³ λ°©κΈ κ·Έ 곑μ μ΄μ©ν΄ μμ μ μ°Ύλλ€. κ·Έλ°λ° λΌλμ€ λ°©μ‘μμλ ν μμ μ λ°λ³΅ν΄μ μ¬μν λλ μμ΄μ λ€μ€κ° κΈ°μ΅νκ³ μλ λ©λ‘λλ μμ λλΆλΆκ³Ό μ²μ λΆλΆμ΄ μ΄μ΄μ μ¬μλ λ©λ‘λμΌ μλ μλ€. λ°λλ‘, ν μμ μ μ€κ°μ λμ κ²½μ° μλ³Έ μμ μλ λ€μ€κ° κΈ°μ΅ν λ©λ‘λκ° λ€μ΄μλ€ ν΄λ κ·Έ κ³‘μ΄ λ€μ€κ° λ€μ κ³‘μ΄ μλ μλ μλ€. κ·Έλ κΈ° λλ¬Έμ λ€μ€λ κΈ°μ΅ν λ©λ‘λλ₯Ό μ¬μ μκ°κ³Ό μ 곡λ μ 보λ₯Ό μ§μ 보면μ λΉκ΅νλ €κ³ νλ€. λ€μκ³Ό κ°μ κ°μ μ ν λ λ€μ€κ° μ°ΎμΌλ €λ μμ μ μ λͺ©μ ꡬνμ¬λΌ.
- λ°©κΈ κ·Έ 곑 μλΉμ€μμλ μμ μ λͺ©, μ¬μμ΄ μμλκ³ λλ μκ°, μ 보λ₯Ό μ 곡νλ€.
- λ€μ€κ° κΈ°μ΅ν λ©λ‘λμ μ 보μ μ¬μ©λλ μμ C, C#, D, D#, E, F, F#, G, G#, A, A#, B 12κ°μ΄λ€.
- κ° μμ 1λΆμ 1κ°μ© μ¬μλλ€. μμ μ λ°λμ μ²μλΆν° μ¬μλλ©° μμ κΈΈμ΄λ³΄λ€ μ¬μλ μκ°μ΄ κΈΈ λλ μμ μ΄ λκΉ μμ΄ μ²μλΆν° λ°λ³΅ν΄μ μ¬μλλ€. μμ κΈΈμ΄λ³΄λ€ μ¬μλ μκ°μ΄ μ§§μ λλ μ²μλΆν° μ¬μ μκ°λ§νΌλ§ μ¬μλλ€.
- μμ μ΄ 00:00μ λ겨μκΉμ§ μ¬μλλ μΌμ μλ€.
- μ‘°κ±΄μ΄ μΌμΉνλ μμ μ΄ μ¬λ¬ κ°μΌ λμλ λΌλμ€μμ μ¬μλ μκ°μ΄ μ μΌ κΈ΄ μμ μ λͺ©μ λ°ννλ€. μ¬μλ μκ°λ κ°μ κ²½μ° λ¨Όμ μ λ ₯λ μμ μ λͺ©μ λ°ννλ€.
- μ‘°κ±΄μ΄ μΌμΉνλ μμ μ΄ μμ λμλ “(None)”μ λ°ννλ€.
μ λ ₯ νμ
μ λ ₯μΌλ‘ λ€μ€κ° κΈ°μ΅ν λ©λ‘λλ₯Ό λ΄μ λ¬Έμμ΄ mκ³Ό λ°©μ‘λ 곑μ μ 보λ₯Ό λ΄κ³ μλ λ°°μ΄ musicinfosκ° μ£Όμ΄μ§λ€.
- mμ μ 1κ° μ΄μ 1439κ° μ΄νλ‘ κ΅¬μ±λμ΄ μλ€.
- musicinfosλ 100κ° μ΄νμ 곑 μ 보λ₯Ό λ΄κ³ μλ λ°°μ΄λ‘, κ°κ°μ 곑 μ 보λ μμ μ΄ μμν μκ°, λλ μκ°, μμ μ λͺ©, μ 보 μ λ³΄κ° ', 'λ‘ κ΅¬λΆλ λ¬Έμμ΄μ΄λ€.
- μμ μ μμ μκ°κ³Ό λλ μκ°μ 24μκ° HH:MM νμμ΄λ€.
- μμ μ λͺ©μ ', ' μ΄μΈμ μΆλ ₯ κ°λ₯ν λ¬Έμλ‘ ννλ κΈΈμ΄ 1 μ΄μ 64 μ΄νμ λ¬Έμμ΄μ΄λ€.
- μ 보 μ 보λ μ 1κ° μ΄μ 1439κ° μ΄νλ‘ κ΅¬μ±λμ΄ μλ€.
μΆλ ₯ νμ
쑰건과 μΌμΉνλ μμ μ λͺ©μ μΆλ ₯νλ€.
λ¬Έμ νμ΄
- my solution
def solution(m, musicinfos):
answer = ''
arr=[]
for i in musicinfos:
temp=i.split(',')
start=temp[0].split(':') # μμ
μμ μκ°
end=temp[1].split(':') # μμ
λλ μκ°
min=(int(end[0])-int(start[0]))*60 + int(end[1])-int(start[1]) # μμ
μ¬μ μκ°
result=''
for j in range(len(temp[3])): # ,μ 곡백μΌλ‘ μ
보 ꡬλΆ
if j!=len(temp[3])-1 and temp[3][j+1]!='#':
result+=temp[3][j]+', '
else:
if j==len(temp[3])-1:
result+=temp[3][j]+','
else:
result+=temp[3][j]
k=result.split(' ')
music=(min//len(k))*k + k[:(min%len(k))] # μ¬μ μκ° λ§νΌ μ
보 그리기
music=' '.join(music)
arr.append([min,temp[2],music]) # list: μ¬μ μκ°, μμ
μ λͺ©, μ
보
result=''
for i in range(len(m)): # ,μ 곡백μΌλ‘ μμ μ΄ κΈ°μ΅νλ λ©λ‘λ ꡬλΆ
if i!=len(m)-1 and m[i+1]!='#':
result+=m[i]+', '
else:
result+=m[i]
result+=','
mmax=-1
for i in arr: # 쑰건과 μΌμΉνλ μμ
μ λͺ© μ°ΎκΈ°
if result in i[2]:
if mmax<i[0]:
mmax=i[0]
answer=i[1]
if answer=='': # μ‘°κ±΄μ΄ μΌμΉνλ μμ
μ΄ μλ κ²½μ°
answer='(None)'
return answer
1) 곑μ μ 보λ₯Ό λ΄κ³ μλ λ°°μ΄ νμ : (μ¬μ μκ° = μμ λλ μκ° - μμ μμ μκ°), (μ¬μ μκ°λ§νΌ μ 보 ꡬνκΈ°)
- listμ (μ¬μ μκ°, μμ μ λͺ©, μ¬μ μκ°λ§νΌμ μ 보) μΆκ°
2) μμ μ΄ κΈ°μ΅νλ λ©λ‘λ ', 'μ 곡백μΌλ‘ ꡬλΆ
3) 쑰건과 μΌμΉνλ μμ μ λͺ© μ°ΎκΈ° : 쑰건 μΌμΉνλ κ²½μ° μ¬μμκ°μ΄ κΈ΄ μμ , λ¨Όμ μ λ ₯λ μμ μ
4) 쑰건과 μΌμΉνλ μμ μ΄ μμΌλ©΄ '(None)' μΆλ ₯
μκ°π€
μ΄ λ¬Έμ μμ μ‘°κΈ μκ°ν΄μΌ νλ λΆλΆμ μ 보μμ #μ΄ λΆμ κ²½μ°μλ€.
μ΄λ»κ² μ½λλ₯Ό μ ꡬνν μ μμκΉ κ³ λ―Όνλ€κ° μ μΌ μ¬μ΄ λ°©λ²μΈ ', 'μ 곡백μ μ¬μ©ν΄μ ꡬλΆνμλ μκ°μ΄ λ€μλ€.
μ΄μ μμ μκ°ν΄λ³΄λ©΄ 곡백λ§μΌλ‘λ ꡬλΆν μ μμμ ν λ°, μ ', 'κΉμ§ νλκ°...
λ¬Έμ λ₯Ό ν λΉμ ', 'λ₯Ό λ£κ³ inμΌλ‘ 쑰건과 μΌμΉνλμ§ κ΅¬λΆνλ λΉμ°ν #μ ꡬλΆνμ§ λͺ»ν΄ μ λλ‘ λ κ°μ΄ λμ€μ§ μμλ€.
곡백μ λ£λλ€λ©΄ 'C 'μ 'C# 'μ΄ λ€λ₯΄κ² λ°μλ€μ¬μ§μ§ μκ² λκ° ν΄μ μλ μ½λμ 곡백μ μΆκ°λ‘ λ£μ΄μ£Όμλ€.
μκ° μ΄κ³Όκ° λμ§ μμκΉ μ΄μ§ 무μκΈ°λ νμ§λ§ λ€νν ν΅κ³Όν μ μμλ€.
μΆμ²: νλ‘κ·Έλλ¨Έμ€ μ½λ© ν μ€νΈ μ°μ΅, https://programmers.co.kr/learn/challenges