728x90
백준 문제 15702번 중간고사 채점 문제의 풀이와 해답입니다.
문제, 입력과 출력입니다.
응시자 수와 문제의 개수를 입력받고 배점을 입력 받은 후 배점의 따라 응시자의 점수를
비교해 높은 점수를 받은 응시자를 찾아내는 문제입니다.
1. 입력
# 문제 개수 N 응시자 수 M 입력
nm = list(map(int,input().split(" ")))
n = nm[0]
m = nm[1]
# 문제의 배점
point = list(map(int,input().split(" ")))
stu = []
# 응시자 정보
for j in range(m):
st = input().split(" ")
st[0] = int(st[0])
stu.append(st)
먼저 문제의 개수와 응시자의 수를 입력받습니다.
다음 문제의 배점을 입력받습니다.
빈 리스트를 하나 선언하고
응시자의 정보를 입력받습니다.
여기서 응시 번호는 int형이므로 꼭 형 변환을 해줍시다.
2. 점수 비교
sum = []
sum_point = 0
# 점수체크
for i in range(m):
for j in range(n):
if stu[i][j+1] == "O":
sum_point+=point[j]
sum.append(sum_point)
sum_point = 0
첫번째 반복문은 응시자의 수만큼 돌려주도록 합시다.
두번째 반복문은 문제의 개수만큼 반복합니다.
만약 n번째 응시생의 정답 유무가 O라면 배점만큼 n번째 응시생의 점수에 더합니다.
그 후 더한 값을 sum 리스트에 append 해줍니다.
sum_point 변수는 꼭 초기화 해주도록 합시다.
3. 출력
lage_point = sum[0]
lage_stu = stu[0][0]
# 출력
for i in range(m):
if lage_point ==sum[i]:
if lage_stu > stu[i][0]:
lage_stu = stu[i][0]
elif lage_point < sum[i]:
lage_point = sum[i]
lage_stu = stu[i][0]
print(lage_stu, lage_point)
먼저 첫번째 점수와 첫번째 학생의 응시 번호를 저장합니다.
반복문은 응시생의 수만큼 반복하고
만약 첫번째 응시생 점수와 다음 응시생 점수가 같다면
응시생의 수험번호가 더 작은 수험번호를 저장합니다.
두 응시생의 점수가 같지 않다면
만약 첫번째 응시생의 점수가 두번째 응시생의 점수보다 작다면
두번째 응시생의 점수를 변수에 넣어줍니다.
또한 해당 응시생의 수험번호를 저장합니다.
4. 결과 확인
예제와 같은 결과가 나오는 모습을 볼 수 있습니다.
728x90
반응형
'백준 문제풀이' 카테고리의 다른 글
[파이썬] 카카오 프로그래머스 문제 풀이 (0) | 2023.05.25 |
---|---|
[파이썬] 백준 2839번 문제풀이 및 해답 (0) | 2023.03.16 |
[파이썬] 백준 1124번 문제풀이 및 해답 (0) | 2023.03.14 |
[파이썬] 백준 문제 4344번 문제풀이 및 해답 (0) | 2023.03.13 |