Level 2. 방금 그곡
방금 그곡
코딩테스트 연습 > 2018 KAKAO BLIND RECRUITMENT > 방금그곡
https://programmers.co.kr/learn/courses/30/lessons/17683
문제 구상
- 입력: 알고있는 악보, "제목,시간,악보"로 구성된 원소 리스트
- 구상:
- "악보"에 사용되는 원소의 길이가 2개인 경우(ex A# B# ...)인 경우 반복할 때 계산의 어려움이 있으므로, 해당 부분을 소문자로 변경하여 길이가 1인 원소로 변환하는 함수를 작성
- 입력된 리스트의 원소를 제목,시간,악보로 나눔
1) 시간의 경우 시작 시간,시작 분, 끝 시간, 끝 분을 고려하여 정수형태로 변환
2) 구해진 정수길이가 해당 원소의 악보의 길이보다 클 수 있으므로, 해당 부분을 고려하여 slicing - slicing된 문자열에 입력된 알고있는 악보가 존재할 경우,
1) 여러개일 경우 재생시간이 제일 긴 음악을 반환하기 위해 초기 리스트를 (제목,길이)로 한 뒤 if case 설정
2) 없을 경우 (None)를 반환하기 위한 설정 - 3의 if case를 통해 구해진 리스트의 제목값을 출력
문제 풀이
#01
def transform(s):
while '#' in s:
s = s.replace(s[s.index('#')-1:s.index('#')+1],s[s.index('#')-1].lower())
return s
def solution(m,musicinfos):
m = transform(m)
#02
for music in musicinfos:
start,end,title,melody = music.split(',') # Devide musicinfo
#02-1
start_h,start_m,end_h,end_m = map(int,start.split(':')+end.split(':'))
time = 60*(end_h-start_h)+(end_m-start_m) # Calculate time
#02-2
melody = (transform(melody)*time)[:time] # Set melody according to time length and transform
#03
answer = ('(None)', None)
if m in melody:
if (answer[1] == None) or (time > answer[1]):
answer = (title, time)
#04
return answer[0]
# Code test
m = "CC#BCC#BCC#BCC#B"
musicinfos = ["03:00,03:30,FOO,CC#B", "04:00,04:08,BAR,CC#BCC#BCC#B"]
solution(m,musicinfos)
Author And Source
이 문제에 관하여(Level 2. 방금 그곡), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pear_min/Level-2.-방금-그곡저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)