[プログラマーLV 2]さっきの歌
1.問題の説明
さっきの歌は
2.問題分析
再生時間を求め、その時間のメロディーを求める.この場合、再生時間が短くなったり長くなったりすることも考えられます.このときに記憶中のメロディーが含まれている場合は、再生時間とインデックスを一緒に記録します.複数の音楽がある場合は、再生時間、インデックス順に並べ替えて値を返します.
3.私の回答
さっきの歌は
2.問題分析
再生時間を求め、その時間のメロディーを求める.この場合、再生時間が短くなったり長くなったりすることも考えられます.このときに記憶中のメロディーが含まれている場合は、再生時間とインデックスを一緒に記録します.複数の音楽がある場合は、再生時間、インデックス順に並べ替えて値を返します.
3.私の回答
import math
def get_min(time1, time2):
hour1 = int(time1[:2])
hour2 = int(time2[:2])
min1 = int(time1[3:])
min2 = int(time2[3:])
return ((hour2-hour1) *60 + (min2 - min1))
def solution(m, musicinfos):
change_code = {'C#' : 'c', 'D#' : 'd', 'F#' : 'f', 'G#' : 'g', 'A#' : 'a'}
result = []
idx = 1
for key in change_code.keys():
if key in m:
m = m.replace(key, change_code[key])
for music in musicinfos:
ms = music.split(',')
time = get_min(ms[0], ms[1])
for key in change_code.keys():
if key in ms[3]:
ms[3] = ms[3].replace(key, change_code[key])
len_ms = len(ms[3])
ms[3] *= math.ceil(time/len_ms)
ms[3] = ms[3][:time]
print(ms[3])
if m in ms[3]:
result.append([time, idx, ms[2]])
idx += 1
if not result: return "(None)"
result.sort(key=lambda x: (-x[0], x[1]))
return result[0][2]
いくつかのスコアリングケースでは、Noneではなく文字列(None)を返すのに失敗しています.あと~しないときはdefault returnを使うときは、コードを確認してから返す習慣をつけましょう.Reference
この問題について([プログラマーLV 2]さっきの歌), 我々は、より多くの情報をここで見つけました https://velog.io/@j_aion/프로그래머스-LV2-방금-그곡テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol