AngelPlayer`s Diary

링크

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PwGK6AcIDFAUq&categoryId=AV5PwGK6AcIDFAUq&categoryType=CODE&problemTitle=1983&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

문제 해석

학점의 평점 종류는 총 10개

평점은 같은 비율로 부여할 수 있음

 

학점은 아래의 비율로 계산됨

 

T : 테스트 케이스의 개수

N : 학생의 수 (10 ≤ N ≤ 100)

K : 찾고자 하는 학생의 성적 (1 ≤ K ≤ N)

(K 번째 학생의 총점과 다른 학생의 총점이 동일한 경우는 입력으로 주어지지 않는다.)

 

 

- 입력

T

N K

중간 기말 과제

중간 기말 과제

...

 

10
10 2
87 59 88

99 94 78

...

 

코드

import sys
sys.stdin = open("1983_input.txt", "r")
# input
T = int(input())
for test_case in range(1, T + 1):
N, K = map(int, input().split())
total_score = [0 for i in range(N)] # 점수를 저장할 변수
RANK = ['A+', 'A0', 'A-', 'B+', 'B0', 'B-', 'C+', 'C0', 'C-', 'D0']
# process
k_score = 0 # 찾을 학생의 점수를 저장할 변수
for i in range(N):
score = list(map(int, input().split()))
total_score[i] = score[0]*0.35 + score[1]*0.40 + score[2]*0.20
k_score = total_score[K-1]
total_score.sort(reverse=True) # 내림차순 정렬
k_rank = total_score.index(k_score)//(N//10)
# output
print(f'#{test_case} {RANK[k_rank]}')
view raw swea_1983.py hosted with ❤ by GitHub

 

 

 

코드 해석

모든 입력받은 학생의 점수를 비율에 맞게 조정하여 리스트에 저장한다.

찾고자 하는 학생의 점수를 별도의 변수에 저장한뒤, 리스트를 내림차순 정렬한다.

정렬된 리스트에서 찾을 학생의 점수와 동일한 값을 가진 인덱스를 찾은 뒤, 비율(등급)을 계산한다.

 

 

 

발생한 문제 & 해결 방안

찾을 학생의 점수를 저장할 때 -1을 하지 않아서 자꾸 이상한 값을 저장하였다. 조금 더 신경써서 코드를 작성할 필요가 있어보인다.

 

 

 

 

 

 

 

해당 코드는 에디터가 코드 연습을 위해 직접 작성하였습니다.

혹시 오류가 있거나 더 좋은 코드 방향성을 아시는 분은 댓글로 남겨주시면 감사하겠습니다!

source : https://github.com/ssh5212/conding-test-practice

 

 

 

 

공유하기

facebook twitter kakaoTalk kakaostory naver band