반응형
포인트
- 방법에 따라서 접근 방법이 달라질 수 있을 것 같습니다. 저는 시간에 따라서 기존에 갖고 있는 scale note를 이어 붙인 뒤 조건에 맞으면 vc에 넣어서 정렬하여 원하는 값을 출력할 수 있도록 문제를 해결하였습니다.
🧶문서는 항상 수정될 수 있습니다. 비판은 환영합니다.
python
def other_char(string:str) -> str:
# 중복되지 않는 스케일로 변환
return string.replace('C#', 'c').replace('D#', 'd').replace('F#', 'f').replace('G#', 'g').replace('A#', 'a')
def solution(m: str, musicinfos: list) -> str:
m = other_char(m)
vc = []
for info in musicinfos:
start, end, title, scale = info.split(',')
time = (int(end[:2]) - int(start[:2])) * 60 + int(end[-2:]) - int(start[-2:])
# 시간 계산하기
part_notes = other_char(scale)
full_notes = part_notes * (time // len(part_notes)) + part_notes[:time % len(part_notes)]
# 시간에 따른 스케일 노트 만들기
if m in full_notes:
# 조건에 있는 것들 전부 배열에 넣어놓기
vc.append([title, time, len(vc)])
if vc:
# 벡터 안에 있으면 정렬해서 제일 처음의 것
vc.sort(key=lambda x: (-x[1], x[2]))
return vc[0][0]
else:
# 없으면 None 값을 반환
return '(None)'
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘] 길 찾기 게임 (0) | 2021.05.07 |
---|---|
[알고리즘] 불량 사용자 (0) | 2021.05.06 |
[알고리즘] 후보키 (0) | 2021.05.05 |
[알고리즘] 파일명 정렬 (0) | 2021.05.04 |
[알고리즘] N진수 게임 (0) | 2021.05.04 |
댓글