본문 바로가기
프로그래머스/2단계

(Python/LV2)야간 전술보행

by windy7271 2022. 11. 4.
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]
반응형

댓글