알고리즘 SQL 문제풀이
[알고리즘] 동영상 재생기, 퍼즐 게임 챌린지, 충돌위험 찾기
magnate96
2024. 12. 23. 20:29
동영상 재생기
문자열 앞에 "0"값을 채우는 함수는 string_number.zfill(n)
0이 아니라 다른 것으로 채우고 싶다면 string_number.rjust(n, "a")
format도 있지만 외우지는 말자
내 풀이
def solution(video_len, pos, op_start, op_end, commands):
def trim(val):
mn, sc = val.split(':')
return int(mn)*60 + int(sc)
video_len = trim(video_len)
pos = trim(pos)
op_start = trim(op_start)
op_end = trim(op_end)
if op_start <= pos < op_end: pos = op_end
for com in commands:
if com == 'prev': pos = max(pos-10, 0)
elif com == 'next': pos = min(pos+10, video_len)
if op_start <= pos < op_end: pos = op_end
return str(pos//60).zfill(2) + ':' + str(pos%60).zfill(2)
퍼즐 게임 챌린지
이분탐색이 주요했던 문제. 보자마자 눈치는 챘고, 모든 숙련도는 양의 정수라고 강조한 걸 보고 확실해졌다.
내 풀이
def solution(diffs, times, limit):
def valid_time(level):
time = 0
for i in range(len(diffs)):
if diffs[i] > level:
if i: time += (diffs[i]-level) * times[i-1]
time += (diffs[i]-level) * times[i]
time += times[i]
return time <= limit
i, j = 1, 100000
while i < j:
mid = (i+j)//2
if valid_time(mid): j = mid
else: i = mid+1
return i
충돌위험 찾기
12/23 에 도전했으나, 1시간여 풀고 포기,
그러나 답안 안 보고 12/24에 재도전.