Uknow's Lab.
article thumbnail

https://www.acmicpc.net/problem/9339

 

9339번: 마라토너

상근이는 마라톤 학원을 운영하고 있다. 학원의 수강생은 총 K명으로, 다가오는 마라톤 대회에 참가하기 위해 연습을 하고 있다. 마라톤 대회가 끝나고, 기록이 6시간 이하인 경우는 마라톤 완주

www.acmicpc.net

 

난이도 : 브론즈 1
태그 : 구현

 

 

1. 설명

수강생들 중 가장 성적이 좋은 수강생과,

통과한 수강생들의 수를 출력하는 문제입니다.

 

 

 

 

 

2. 소스코드

<cpp />
#include <stdio.h> int main() { int T; scanf("%d", &T); while (T--) { int studentCnt; // 학생의 수 scanf("%d", &studentCnt); int students[101]; // 학생들의 수 (최대 100명) for (int i = 0; i < studentCnt; i++) { scanf("%d", &students[i]); } int participantCnt = 0; // 참가자의 수 scanf("%d", &participantCnt); int bestScore = 987654321; // 최고 점수 int successCnt = 0; // 통과한 학생 수 int bestScoreIdx = 0; for (int i = 0; i < participantCnt; i++) { int number, hour, min; scanf("%d %d %d", &number, &hour, &min); for (int j = 0; j < studentCnt; j++) { if (students[j] == number) { int score = hour * 60 + min; // 포기 시 -1, -1로 주어짐, 6시간 내 완주 시에만 통과처리 if(score >= 0 && score <= 6 * 60) { if (score < bestScore) { bestScore = score; bestScoreIdx = j; } successCnt++; } break; } } } printf("%d %d\n", students[bestScoreIdx], successCnt); } }

 

학생들의 번호를 students에 저장해놓고,

참가자가 수강생이라면 6시간(6시간 * 60분 = 360분) 내 완주했는지를 체크하여

6시간 내 완주라면, 완주자들을 체크하느 successCnt를 1만큼 증가시킵니다.

 

bestScore는 최고 성적(통과 시간이 가장 낮음)을 저장할 변수이며,

bestScoreIdx는 최고 성적의 index 값을 저장할 변수입니다.

수강생의 기록이 최고 성적일 때마다 해당 값을 갱신시켜줍니다.

 

 

profile

Uknow's Lab.

@유노 Uknow

인생은 Byte와 Double 사이 Char다. 아무말이나 해봤습니다.