본문 바로가기
Python/알고리즘

[COS PRO 2급 #5-2] 공강시간 구하기

by 포푸리 (POPOOLY) 2023. 1. 30.
반응형

문제설명

공강이란 수업 시간 사이에 수업이 없이 비는 시간입니다. 시간표가 주어질 때 공강은 총 몇 시간인지 구하려 합니다. 시간표 상에 수업이 있는 시간은 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

댓글