[プログラマー][第1ラウンド]中秋流量解答(Python)
12379 ワード
質問の表示
問題は、リストが完了順に並べられ、スループットの最大値が1秒以内に求められることです.
リクエストが完了した時間(リクエストを含む)から、1秒以内の処理中のリクエスト数を計算し、最大値を見つけ、返される方法で解きます.
要求は「2016-09-1501:00:04.001 2.0 s」の日付、要求完了時間、処理に要する時間の順に空白に分割され、文字列形式で与えられる.
時間を比較するために要求データを加工する必要があるため、各要求完了後1秒、要求完了時間から処理に要する時間を減算する要求開始時間を求める関数が必要となる.
要求完了順に並べ替えられたリストについては、基準となる要求完了時間から1秒後までの時間であり、これらの後要素の要求開始時間が要求開始時間よりも小さい(高速)要求は、1秒以内に要求処理が含まれているとみなされ、カウントされ、最後に1秒以内に処理される最大要求の数が計算され、戻される.
に答える
問題は、リストが完了順に並べられ、スループットの最大値が1秒以内に求められることです.
リクエストが完了した時間(リクエストを含む)から、1秒以内の処理中のリクエスト数を計算し、最大値を見つけ、返される方法で解きます.
要求は「2016-09-1501:00:04.001 2.0 s」の日付、要求完了時間、処理に要する時間の順に空白に分割され、文字列形式で与えられる.
時間を比較するために要求データを加工する必要があるため、各要求完了後1秒、要求完了時間から処理に要する時間を減算する要求開始時間を求める関数が必要となる.
要求完了順に並べ替えられたリストについては、基準となる要求完了時間から1秒後までの時間であり、これらの後要素の要求開始時間が要求開始時間よりも小さい(高速)要求は、1秒以内に要求処理が含まれているとみなされ、カウントされ、最後に1秒以内に処理される最大要求の数が計算され、戻される.
コード#コード#
def start_time(log, t):
hh, mm , ss = log
ss = round(float(ss) - float(t) + 0.001, 3)
if ss < 0:
mm = int(mm)-1
ss += 60
if mm < 0:
hh = int(hh)-1
mm = mm + 60
if hh < 0:
return [0, 0, 0]
return [int(hh),int(mm),ss]
def after_1sec(log):
hh, mm , ss = log
ss = round(float(ss) + 0.999, 3)
if ss >= 60:
ss = round(ss - 60, 3)
mm = int(mm) + 1
if mm >= 60:
mm -= 60
hh = int(hh) + 1
if hh >= 60:
return [23, 59, 59.999]
return [int(hh),int(mm),ss]
def is_contain(end, start):
if end[0] < start[0]: return False
if end[1] < start[1]: return False
if end[2] < start[2]: return False
return True
def solution(lines):
answer = 1
lines = list(map(lambda x: [x.split()[1].split(':'), x.split()[2][:-1]], lines))
for i in range(len(lines)-1):
cnt = 1
for j in range(i+1, len(lines)):
if is_contain(after_1min(lines[i][0]), start_time(lines[j][0], lines[j][1])):
cnt += 1
answer = max(answer, cnt)
return answer
Reference
この問題について([プログラマー][第1ラウンド]中秋流量解答(Python)), 我々は、より多くの情報をここで見つけました https://velog.io/@yhd520/프로그래머스-1차-추석-트래픽-문제-풀이-Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol