728x90
반응형
문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/133501
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이:
최댓값
list = [distance]
for i in range(len(scope)):
start, end = sorted(scope[i])
work, rest = times[i]
start, end = 시작값 끝나는값
일하는시간, 쉬는시간
현재위치 start점 만들어줌
while start <= end:
check = start % (work + rest) # 근무,휴식 패턴 파악하고
if 0 < check and check <= work: # 남은 일수가 work 일수보다 낮으면 근무 인 날에 지나 간거다
list.append(start) # 걸린 위치를 추가 해주고
break # 걸렸으니 while 문 탈출
start += 1
ex [7.8]으로 했을때 (근무,근무,휴식,휴식)
근근휴휴근근휴휴 이다.
7 % 4 하면 나머지 3으로 인덱스3 은 휴식 이므로 통과되고 +1
end 와 같아지므로 while 문 탈출하고 다음 포문 시작
즉 지금 있는 위치에서 근무시간+휴시시간 을 나눴을때 나머지가 work보다 작으면 근무시간이고 크면 쉬는시간이라 생각하면 된다.
return sorted(list)[0]
정답 리턴
def solution(distance, scope, times):
list = [distance]
for i in range(len(scope)):
start, end = sorted(scope[i])
work, rest = times[i]
while start <= end:
check = start % (work + rest) # 근무,휴식 패턴 파악하고
if 0 < check and check <= work: # 남은 일수가 work 일수보다 낮으면 근무 인 날에 지나 간거다
list.append(start) # 걸린 시간을 추가 해주고
break # 게임끝
start += 1
return sorted(list)[0]
반응형
댓글