문제설명
공강이란 수업 시간 사이에 수업이 없이 비는 시간입니다. 시간표가 주어질 때 공강은 총 몇 시간인지 구하려 합니다. 시간표 상에 수업이 있는 시간은 1로, 수업이 없는 시간은 0으로 표시합니다. 모든 수업은 정각에 시작해 1시간 뒤에 끝납니다.
예를 들어, 위 시간표에서 공강은 총 3시간입니다.
공강이 총 몇 시간인지 구하기 위해 다음과 같이 프로그램 구조를 작성했습니다.
```
1. 가장 첫 수업 시작 시각을 구합니다.
2. 가장 마지막 수업 시작 시각을 구합니다.
3. 1과 2사이에서 수업이 없는 시간을 셉니다.
```
시간표를 표현한 리스트 time_table이 매개변수로 주어질 때 공강은 총 몇 시간인지 return 하도록 solution 함수를 작성하려 합니다. 위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.
매개변수 설명
시간표를 표현한 리스트 time_table이 solution 함수의 매개변수로 주어집니다.
* time_table은 길이가 5 이상 15 이하인 리스트입니다.
* 시간표에서 수업이 있는 시간은 1로 표현하고 수업이 없는 시간은 0입니다.
* time_table의 원소는 0 또는 1입니다.
return 값 설명
공강이 총 몇 시간인지 return 해주세요.
예시
| time_table | return |
|--------------------------------|--------|
| [1, 1, 0, 0, 1, 0, 1, 0, 0, 0] | 3 |
예시설명
문제에 나온 예와 같습니다.
문제 코드
def func_a(time_table):
answer = 0
for i, t in reversed(list(enumerate(time_table))):
if t == 1:
answer = i
break
return answer
def func_b(time_table, class1, class2):
answer = 0
for i in range(class1, class2):
if time_table[i] == 0:
answer += 1
return answer
def func_c(time_table):
answer = 0
for i, t in enumerate(time_table):
if t == 1:
answer = i
break
return answer
def solution(time_table):
answer = 0
first_class = func_@@@(@@@)
last_class = func_@@@(@@@)
answer = func_@@@(@@@)
return answer
풀이
# 마지막 수업 시작 시각 구하기
def func_a(time_table):
answer = 0
for i, t in reversed(list(enumerate(time_table))):
if t == 1:
answer = i
break
return answer
# 첫 수업 시작 시각과 마지막 수업 시작 시각 사이에 공강 수 구하기
def func_b(time_table, class1, class2):
answer = 0
for i in range(class1, class2):
if time_table[i] == 0:
answer += 1
return answer
# 첫 수업 시작 시각 구하기
def func_c(time_table):
answer = 0
for i, t in enumerate(time_table):
if t == 1:
answer = i
break
return answer
def solution(time_table):
answer = 0
first_class = func_c(time_table)
last_class = func_a(time_table)
answer = func_b(time_table, first_class, last_class)
return answer
댓글