fragment-header
fragment-markdown
홈
로그인
로그아웃
내 블로그
설정
로그인
백준 15702 (C++) 중간고사 채점
최초 업로드: 2025-10-24 22:06:15
최근 수정 시간: 2025-10-24 22:06:15
게시자: rlatjwls3333
카테고리: 백준
조회수: 8
# [Silver V] 중간고사 채점 [문제 링크](https://www.acmicpc.net/problem/15702) ## 문제 설명 <p>이번 중간고사에는 총 N문제가 나왔고, 응시한 사람의 수는 M명이다. 각 문제의 배점과 각 사람의 결과가 주어졌을 때, 가장 높은 점수를 획득한 사람을 구하는 프로그램을 작성하시오.</p> ## 입력 <p>첫째 줄에 문제의 개수 N과 응시자의 수 M이 주어진다. (1 ≤ N ≤ 100, 1 ≤ M ≤ 100)</p> <p>둘째 줄에는 문제의 배점이 1번 문제부터 N번 문제까지 순서대로 주어진다. 각 문제의 배점은 100보다 작거나 같은 자연수이며, 공백으로 구분되어져 있다.</p> <p>셋째 줄부터 M개의 줄에는 응시자의 정보가 한 줄에 하나씩 주어진다. 응시자의 정보는 총 N+1개의 문자열로 이루어져 있다. 첫 번째 문자열은 응시자의 수험 번호이다. 수험 번호는 100,000보다 작거나 같은 자연수이다. 두 번째 부터 N+1번째 문자열은 각 시험 문제의 채점 결과이다. 채점 결과는 1번 문제부터 N번 문제까지 순서대로 주어지며, '<code>O</code>' 또는 '<code>X</code>'이다. '<code>O</code>'가 주어진 경우에는 해당 문제를 맞춘 것이고, '<code>X</code>'가 주어진 경우에는 해당 문제를 틀린 것이다.</p> <p>문제를 맞춘 경우에는 그 문제의 배점이 점수에 더해지게 되며, 틀린 경우에는 더해지지 않는다. 수험 번호가 중복되는 경우는 없다.</p> ## 출력 <p>첫째 줄에 가장 높은 점수를 얻은 학생의 번호와 점수를 공백으로 구분해 출력한다. 만약, 가장 높은 점수를 얻은 학생이 여러 명이라면, 수험 번호가 가장 작은 것을 출력한다.</p> ## 풀이 최대 점수를 출력하는 구현 문제입니다. ``` c++ #include<bits/stdc++.h> using namespace std; int score[100]; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; for(int i=0;i<n;i++) cin >> score[i]; int maxId, maxScore=-1; while(m--) { int id; cin >> id; int curScore=0; for(int i=0;i<n;i++) { char ch; cin >> ch; if(ch=='O') curScore += score[i]; } if(maxScore<=curScore) { if(maxScore==curScore) maxId = min(maxId, id); else maxId = id; maxScore = curScore; } } cout << maxId << ' ' << maxScore; } ```