문제설명
체력시험 합격 인원을 알아보려고 합니다. 체력시험 종목으로는 윗몸일으키기, 팔굽혀펴기, 달리기가 있습니다. 종목별 합격기준은 다음과 같습니다.
| 윗몸일으키기 | 팔굽혀펴기 | 달리기 |
|---|---|---|
| 80점 이상 | 88점 이상 | 70점 이상 |
* 통과한 종목이 하나 이하거나, 통과 점수의 반을 넘기지 못한 종목이 있다면 불합격입니다.
* 그 외에는 합격입니다.
시험에 합격한 인원을 구하기 위해 다음과 같이 프로그램 구조를 작성했습니다.
```
1. 통과한 종목이 몇 개인지 셉니다.
2. 통과 점수의 반을 넘기지 못한 종목이 몇 개인지 셉니다.
3. 통과한 종목이 하나보다 많고 통과 점수의 반을 넘기지 못한 종목이 없으면 통과한 인원으로 셉니다.
```
각 종목 기록을 담고 있는 리스트 scores가 매개변수로 주어질 때, 시험에 합격한 인원을 return 하도록 solution 함수를 작성하려 합니다. 위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b func_c 함수와 매개변수를 알맞게 채워주세요.
매개변수 설명
각 종목 기록을 담고 있는 리스트 scores가 solution 함수의 매개변수로 주어집니다.
* scores에는 윗몸일으키기, 팔굽혀펴기, 달리기 점수가 차례로 들어있습니다.
* scores의 원소는 0 이상 100 이하인 정수입니다.
* scores의 길이는 0 이상 10,000 이하인 정수입니다.
return 값 설명
시험에 합격한 인원을 return합니다.
예시
| score | return |
|---|---|
| [[30, 40, 100], [97, 88, 95]] | 1 |
| [[90, 88, 70], [85, 90, 90], [100, 100, 70], [30, 90, 80], [40, 10, 20], [83, 88, 80]] | 4 |
예시설명
예시 #1
1번째 사람은 윗몸일으키기 30점, 팔굽혀펴기 40점으로 합격 점수의 반을 통과하지 못해 불합격입니다.
2번째 사람은 윗몸일으키기 97점, 팔굽혀펴기 88점, 달리기 95점으로 모두 통과하여 합격입니다. 따라서 총 1명이 합격하였습니다.
예시 #2
1번째, 2번째, 3번째, 6번째 사람이 합격 기준을 만족하여 총 4명이 합격하였습니다.
문제 코드
def func_a(passed, non_passed):
return ( passed > 1 and non_passed ==0 )
def func_b(scores):
answer = 0
if scores[0] < 40:
answer += 1
if scores[1] < 44:
answer += 1
if scores[2] < 35:
answer += 1
return answer
def func_c(scores):
answer = 0
if scores[0] >= 80:
answer += 1
if scores[1] >= 88:
answer += 1
if scores[2] >= 70:
answer += 1
return answer
def solution(scores):
answer = 0
for my_score in scores:
passed = func_@@@(@@@)
non_passed = func_@@@(@@@)
answer += func_@@@(@@@, @@@)
return answer
풀이
# 통과 종목이 1개 초과이고 통과 점수의 반을 넘기지 못한 종목이 없으면 True
# 통과 종목이 1개 이하이거나 통과 점수의 반을 넘기지 못한 종목이 있으면 False
def func_a(passed, non_passed):
return ( passed > 1 and non_passed ==0 )
# 통과 점수의 반을 넘기지 못한 종목 개수 구하기
def func_b(scores):
answer = 0
if scores[0] < 40:
answer += 1
if scores[1] < 44:
answer += 1
if scores[2] < 35:
answer += 1
return answer
# 통과 종목 개수 구하기
def func_c(scores):
answer = 0
if scores[0] >= 80:
answer += 1
if scores[1] >= 88:
answer += 1
if scores[2] >= 70:
answer += 1
return answer
def solution(scores):
answer = 0
for my_score in scores:
passed = func_c(my_score)
non_passed = func_b(my_score)
# 파이선에서 True는 1, False는 0
answer += func_a(passed, non_passed)
return answer
댓글