-
상호 평가프로그래머스(Programmers) 2021. 9. 9. 22:36반응형
제한사항
- 2 ≤ scores의 행의 길이(학생 수) ≤ 10
- scores의 열의 길이 = scores의 행의 길이
- 즉, scores는 행과 열의 길이가 같은 2차원 배열입니다.
- 0 ≤ scores의 원소 ≤ 100
- return 값 형식
- 0번 학생의 학점부터 차례대로 이어 붙인 하나의 문자열을 return 합니다.
입출력 예
scores result
[[100,90,98,88,65],[50,45,99,85,77],[47,88,95,80,67],[61,57,100,80,65],[24,90,94,75,65]] "FBABD" [[50,90],[50,87]] "DA" [[70,49,90],[68,50,38],[73,31,100]] "CFD" #include <string> #include <vector> #include <algorithm> #include <iostream> using namespace std; char getGrade(int tmp ) { char answer; if(tmp>= 90) answer= 'A'; else if(tmp <90 && tmp >= 80) answer ='B'; else if(tmp <80 && tmp >= 70) answer ='C'; else if(tmp <70 && tmp >= 50) answer ='D'; else answer ='F'; return answer; } string solution(vector<vector<int>> scores) { string answer = ""; int sum=0;// 점수합 double avg;// 평균 int high=0;//최고 int low=100; //최저 int self; //본인점수 int cnt=0; int limit = scores.size(); int low_cnt=0; int high_cnt=0; for(int i=0; i<limit; i++) { for(int j=0; j< limit; j++) { if(scores[j][i] >= high) { high = scores[j][i]; } if(scores[j][i] <= low) { low = scores[j][i]; } if(j == i) { self = scores[j][j]; } sum += scores[j][i]; } for(int k=0; k<limit; k++) { if(scores[k][i] == low) { low_cnt++; } if(scores[k][i] == high) { high_cnt++; } } if((self == high && high_cnt<2) || (self == low && low_cnt<2)) //최고점 혹은 최저점이 본인이 부여한 점수이며 해당 점수가 중복되지 않은경우 { sum -= self; avg = (double)sum /(double)(limit-1); } else { avg= (double)sum / (double)limit; } char tmp = getGrade(avg); answer.push_back(tmp); high=0; low=100; sum=0;//변수 사용후 초기화 high_cnt =0; low_cnt=0; } return answer; }
=> 본인이 본인에게 부여한 점수가 최고점 혹은 최저점에 속하는지 확인하여야한다.
=> 위의 사항에 해당한다하더라도 최고점 혹은 최저점의 갯수가 복수일 경우 해당 점수는 무시하지 않고 계산에 넣어야합니다. (본인은 이 요구사항을 보지 못해 한동안 헤매 회사동기의 도움을 받았습니다😭.)
=> 이중 벡터이지만 2차원배열로 생각하면 됩니다.
=> 본인이 받은 점수가 행이 아닌 열라는 것을 염두에 둬야합니다. (세로 O , 가로 X)
=> 평균을 내야하므로 double형을 사용하여 결과값을 구해야합니다.
반응형'프로그래머스(Programmers)' 카테고리의 다른 글
복서 정렬하기 C++ (0) 2021.10.07 모음사전 C++ (0) 2021.10.07 부족한 금액 계산하기 C++ (0) 2021.09.07 로또의 최고순위와 최저순위 (0) 2021.09.06 기능개발 (0) 2021.09.05