반응형
문제 설명
그렙대학교는 3가지 전형으로 신입생을 모집합니다.
- 학생부 전형
최종 점수 = 학생부 종합 점수 * 0.3 + 수상 및 활동 점수 * 0.3 + 면접 점수 * 0.4
최종 점수가 0.8 이상이면 합격이다.
논술 전형
최종 점수 = 논술 점수 * 0.5 + (국어 점수 * 0.3 + 수학 점수 * 0.4 + 영어 점수 * 0.3) * 0.5=
최종 점수가 0.75 이상이면 합격이다.정시 전형
최종 점수 = 국어 점수 * 0.3 + 수학 점수 * 0.4 + 영어 점수 * 0.3
최종 점수가 0.75 이상이면 합격이다.
문제에서 그렙대학교에 지원한 n 명의 데이터가 담긴 자료 data가 주어집니다.
그리고 자료 data는 다음과 같이 구성되어 있습니다.
- 자료의 첫 번째 열에는 학생들의 이름 대신 0부터 (n - 1)까지 번호가 차례대로 담겨있다.
- 자료의 두 번째 열은 학생들의 입학 전형을 의미하는 값이 담겨있다. 0은 학생부 전형, 1은 논술부 전형, 2는 정시 전형을 의미한다.
- 자료의 세 번째 열부터 아홉 번째 열까지의 데이터는 전형 방식에 따라 필요하지 않을 수 있으며, 이 경우에는 NaN 이 들어 있습니다
그리고 두 번째 열에 담긴 값에 따라 세 번째부터 아홉 번째 열까지 값이 다르게 적혀있습니다.
- 두 번째 열이 0(학생부)이라면 학생부 종합 점수와 수상 및 활동 점수, 그리고 면접 점수만 적혀 있고 그외의 값은 NaN이다.
- 두 번째 열이 1(논술)이라면 논술 점수, 국어 점수, 수학 점수, 영어 점수만 적혀 있고 그외의 값은 NaN이다.
- 두 번째 열이 2(정시)이라면 국어 점수, 수학 점수, 영어 점수만 적혀 있고 그외의 값은 NaN이다.
data가 numpy.ndarray타입의 n x 8 모양을 가진 2차원 배열로 주어질 때, 합격자들의 번호를 오름차순으로 list에 담아 반환하는 함수를 구현하세요.
제한 사항
- 세 번째 열부터 아홉 번째 열까지 점수들은 0 이상 1 미만의 실수 형태로 주어진다.
- data는 요소들은 np.float64타입으로 지정되어있다.
- data 내에 있는 NaN은 np.nan으로 채워져있다.
입출력 예
data | return |
---|---|
[[0. 2. nan nan nan nan 0.39 0.21 0.54] [1. 0. 0.74 0.22 0.22 nan nan nan nan] [2. 0. 0.65 0.48 0.79 nan nan nan nan] [3. 1. nan nan nan 0.76 0.64 0.99 0.87]] | [3] |
입출력 예 설명
입출력 예에서 data를 테이블로 나타내면 다음과 같습니다.
0 열 | 1 열 | 2 열 | 3 열 | 4 열 | 5 열 | 6 열 | 7 열 | 8 열 |
---|---|---|---|---|---|---|---|---|
0. | 2. | nan | nan | nan | nan | 0.39 | 0.21 | 0.54 |
1. | 0. | 0.74 | 0.22 | 0.22 | nan | nan | nan | nan |
2. | 0. | 0.65 | 0.48 | 0.79 | nan | nan | nan | nan |
3. | 1. | nan | nan | nan | 0.76 | 0.64 | 0.99 | 0.87 |
번호 3을 가진 지원자만 논술 전형에 해당하는 계산식을 사용하여 최종 점수를 구하면 다음과 같습니다.
[0.5 x 0.76] + [0.5 x (0.64 x 0.3 + 0.99 x 0.4 + 0.87 x 0.3)] = 0.8045
논술 전형의 합격 기준 0.75보다 큰 값이고, 나머지 0, 1, 2번 지원자들을 각 전형의 합격 기준보다 낮으므로 [3]을 반환합니다.
문제풀이
import numpy as np
def solution(data):
answer = []
for i in data:
sum = 0
if i[1] == 0.0:
sum = i[2]*0.3 + i[3]*0.3 + i[4]*0.4
if sum >= 0.8:
answer.append(i[0])
elif i[1] == 1.0:
sum = i[5]*0.5 + (i[6]*0.3 + i[7]*0.4 + i[8]*0.3)*0.5
if sum >= 0.75:
answer.append(i[0])
elif i[1] == 2.0:
sum = i[6]*0.3 + i[7]*0.4 + i[8]*0.3
if sum >= 0.75:
answer.append(i[0])
answer.sort()
return answer
'AI_Bootcamp' 카테고리의 다른 글
4주차 Day19 Deep Learning ANN,DNN,CNN 비교 (0) | 2022.02.01 |
---|---|
4주차 Day18 로지스틱 회귀(Logistic Regression) (0) | 2022.01.27 |
4주차 Day17 Multivariable Linear Regression with PyTorch chap2 (0) | 2022.01.25 |
4주차 Day17 Linear Regression with PyTorch chap1 (0) | 2022.01.25 |
4주차 Day16 Linear Regression with bias chap2 (0) | 2022.01.25 |