해당 문제는 위 링크에서 ‘ [기본] 행복은 성적순이 아니잖아요’ 로 검색하면 찾을 수 있습니다. - Direct URL
문제 요구사항
첫째 줄에 구름이가 듣는 수업의 개수 t가 주어진다.
둘째 줄부터 t줄동안 각 과목 별 전체 학생 수 l, 구름이의 등수 s, 과목별 A+ 성적 비율 n, 과목의 수행 평가 개수 k, 수행 평가 과락 기준 점수 m, 구름이가 k개의 수행 평가 중 취득한 점수 v가 k개 공백을 두고 주어진다.
A+ 성적 산출 방법
시험 성적이 전체 학생 n%보다 높아야 한다.
성적이 좋더라도 k개의 수행 평가 모두 m점보다 높아야 한다.
구름이가 모든 과목에서 A+를 맞았다면 1을, 아니라면 0을 출력하시오
접근 방법
문제에서 주어진 요구 사항대로 문제 풀이를 하면 된다.
풀이 순서
구름이가 듣는 수업의 개수 t를 입력 받는다.
t 만큼 반복하여, 각 과목 별 전체 학생 수 l, 구름이의 등수 s, 과목별 A+ 성적 비율 n, 과목의 수행 평가 개수 k, 수행 평가 과락 기준 점수 m, 구름이가 k개의 수행 평가 중 취득한 점수 v를 입력 받는다.
이 때, 구름이가 취득한 점수 v가 하나라도 m이하면 flag에 false 값을 준다.
조건 1에 해당하는 값 전체 학생 수 * n * 0.01을 구한다.
구름이의 등수 s가 위에서 구한 값보다 크다면(등수가 더 낮은 것이므로) flag에 false 값을 준다.
flag가 false 라면 한 과목이라도 A+가 아닌 것이 되므로 반복문을 종료한다.
flag에 따라 1과 0 결과 값을 출력한다.
소스코드
#include<iostream>
#include<cmath>usingnamespacestd;/*
* 규칙
* 시험 성적이 전체 학생 n%보다 높은 백분위
* 성적이 좋더라도 k개의 수행 평가 모두 m점보다 높아야 함
*/intmain(){intt;cin>>t;boolflag=true;for(inttest_case=0;test_case<t;test_case++){intv[1000]={0,};inttotal_student_cnt,goormi_rank,n,k,m;cin>>total_student_cnt>>goormi_rank>>n>>k>>m;for(inti=0;i<k;i++){cin>>v[i];if(v[i]<=m)flag=false;}// 랭크 구함doubleigeobodankeoyaham=total_student_cnt*n*0.01;intigeobodankeoyaham2=floor(igeobodankeoyaham);if(goormi_rank>igeobodankeoyaham2)flag=false;if(!flag)break;}if(!flag)cout<<0;elsecout<<1;return0;}