문제설명
n명이 시간표에 따라 교대 근무에 들어갑니다. 이때 가장 오래 일한 사람이 몇 시간 일했는지 알아내려 합니다. 근무 순번은 첫 번째 사람부터 n번째 사람 순으로 합니다. n번 사람이 일을 한 뒤에는 다시 첫 번째 사람부터 일을 합니다.
예를 들어 시간표가 [1, 5, 1, 9]이고 n이 3이면 첫 번째 사람은 1+9시간, 두 번째 사람은 5시간, 세 번째 사람은 1시간 근무합니다. 따라서 첫 번째 사람이 가장 오래 일했으며, 10시간 일했습니다.
근무 시간표를 담은 리스트 time_table과 사람 수 n이 매개변수로 주어질 때, 가장 오래 일한 사람은 몇 시간 일했는지 return 하도록 solution 함수를 작성해주세요.
매개변수 설명
시간표를 담은 리스트 time_table과 사람 수 n이 solution 함수의 매개변수로 주어집니다.
* time_table의 길이는 1 이상 100 이하입니다.
* time_table의 원소는 1 이상 100 이하인 자연수입니다.
* n은 1 이상 `time_table의 길이` 이하인 자연수입니다.
return 값 설명
가장 오래 일한 사람이 몇 시간 일했는지 return 합니다.
예시
| time_table |n|return |
|---|---|------|
|[1, 5, 1, 9] |3| 10|
| [4, 8, 2, 5, 4, 6, 7]|4 | 14|
예시설명
예시 #1
앞선 예와 같습니다.
예시 #2
첫 번째 사람은 4+4시간만큼 근무를 합니다.
두 번째 사람은 8+6시간만큼 근무를 합니다.
세 번째 사람은 2+7시간만큼 근무를 합니다.
네 번째 사람은 5시간만큼 근무를 합니다.
따라서, 가장 오래 근무를 한 사람은 14시간 일했습니다.
문제 코드
def solution(time_table, n):
#여기에 코드를 작성해주세요.
answer = 0
return answer
풀이 1
def solution(time_table, n):
answer = []
# 직원별 근무시간을 answer에 추가
for i in range(len(time_table)):
temp = 0
while i < len(time_table):
temp += time_table[i]
i += n
answer.append(temp)
answer = max(answer)
return answer
풀이 2
def solution(time_table, n):
answer = 0
lst = [0 for _ in range(n)]
# x번째 사람은 x, x+n, x+2n 순서에 들어가므로 교대근무 순서를 n으로 나눈 나머지가 항상 같음
for i, t in enumerate(time_table):
lst[i % n] += t
answer = max(lst)
return answer
댓글