코딩테스트/SWEA

[SW Expert Academy][D2][python] 1983.조교의 성적 매기기

코린영이 2023. 5. 11. 23:59
728x90
반응형

코딩테스트 문제 푸는 방향
1. 문제를 정독한다. 정독하면서 손으로 한 번 풀어본다.
2. 접근 방법을 구상한다.
3. 핵심 코드를 시각적으로 보이도록 손코딩한다. 
4. 코드를 구현한다. 
5. 디버깅 및 개선을 한다.
6. 부분 정답이 나올 시 1번으로 돌아가 더 꼼꼼하게 읽어보고 다른 접근 방법은 없는지 생각해본다. 

문제번호. 문제이름

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

 

SW Expert Academy

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

swexpertacademy.com

학생들의 수, 학점을 알고 싶은 K번째 학생의 번호가 주어지고

학생들의 중간고사, 기말고사, 과제 점수들이 주어진다.

k번째 학생의 학점을 출력하면 된다.

 

[제약 사항]

1. 학생들의 수 N는 10의 배수

2. K는 1이상 N 이하의 정수

 

[문제 해결 방향]

k의 등급 인덱스를 구하는 것이 관건인 것 같다.

일단 N//10을 해줘야 한 등급에 몇 명이 있는지 알 수 있다. 

 

 

 

[파이썬 코드]

T = int(input())

for test_case in range(1,T+1):
    N, K = map(int, input().split())
    grade = ['A+','A0','A-','B+','B0','B-','C+','C0','C-','D0']
    stu = []
    # 학생들의 총점 추가
    for i in range(N):
        mid, fin, proj = map(int,input().split())
        total = mid*0.35 + fin*0.45 + proj*0.2
        stu.append(total)

    # k의 점수 인덱스     
    score_K = stu[K-1]
    stu.sort(reverse=True) # 역순으로 정렬 
    
    # k의 등급 인덱스 
    grade_K = int(stu.index(score_K)/(N//10))

    print("#{} {}".format(test_case,grade[grade_K]))

 

[참고 사이트]

https://stage-diary.tistory.com/624

 

[PYTHON] SWEA1983 조교의 성적 매기기

T = int(input()) # 1번째 2번째 3번째 # i=0 i=1 i=2 for t in range(1, T+1): # N은 항상 10의 배수 # 1

stage-diary.tistory.com

 

[느낀점]

증말 이해력이 딸리면 문제 이해조차 못한다는걸 느꼇다 시부레

점수리스트를 D0부터 역순으로 적어줬으면 역순으로 정렬을 안해줘도 괜찮지 않았을까,, 오 대박 맞았다ㅏ

728x90
반응형