Notice
Recent Posts
Recent Comments
Link
나의 개발일지
[프로그래머스] Lv.2 [3차] 방금그곡 [Python, 파이썬] KAKAO 본문
- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/17683
- 🔑 #붙은 음들을 다른 문자로 변환해서 비교를 했다.
- ex) "C#" = "c"
- 재생 시간보다 긴 악보일 때는 재생 시간만큼만 악보를 잘랐다.
- 재생 시간보다 짧은 악보일 때는 재생 시간 이상이 될 때까지 악보를 연결했다.
- 일치하는 악보가 여러 개 일 경우 재생 시간이 가장 긴 음악을 반환해야 하기 때문에 재생 시간을 음수로 넣고 정렬을 했다.
- 10분이면 -10
- 20분이면 -20
- 정렬하면 오름차순이 되기 때문에 -20, -10으로 정렬이 된다.
- 재생 시간도 같은 경우 먼저 입력된 음악을 반환, 이 과정도 위처럼 정렬을 하면 자동으로 성립된다.
- ex) "C#" = "c"
def convert(s): # C# -> c 처럼 변환
sharp = ["C#", "D#", "F#", "G#", "A#"]
for i in sharp:
s = s.replace(i, i[0].lower())
return s
def solution(m, musicinfos):
answer = []
m = convert(m)
for i in musicinfos:
music = i.split(',')
st = music[0].split(':')
ed = music[1].split(':')
st = int(st[0]) * 60 + int(st[1])
ed = int(ed[0]) * 60 + int(ed[1])
time = ed - st # 재생 시간
cm = convert(music[3]) # 변환한 악보
if time < len(cm): # 재생 시간보다 긴 악보면
cm = cm[:time] # 재생 시간만큼만 잘라준다.
else: # 재생 시간보다 짧은 악보면
while time >= len(cm): # 재생 시간보다 길이가 길게 만들어준다.
cm += cm
if m in cm:
answer.append([-time, music[2]]) # 재생 시간은 음수로 (정렬하기 위함)
if not answer: # 일치하는 음악이 없을 때
return "(None)"
else: # 일치하는 음악 여러 개 일 때
answer.sort(key = lambda x : x[0]) # 재생 시간으로 정렬
return answer[0][1]
'프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.3 징검다리 건너기 [Python, 파이썬] KAKAO (0) | 2023.10.09 |
---|---|
[프로그래머스] Lv.1 키패드 누르기 [Python, 파이썬] KAKAO (1) | 2023.10.09 |
[프로그래머스] Lv.2 메뉴 리뉴얼 [Python, 파이썬] KAKAO (1) | 2023.10.07 |
[프로그래머스] Lv.3 불량 사용자 [Python, 파이썬] KAKAO (0) | 2023.10.06 |
[프로그래머스] Lv.1 신규 아이디 추천 [Python, 파이썬] KAKAO (0) | 2023.10.06 |
Comments