티스토리 뷰

반응형

https://programmers.co.kr/learn/courses/30/lessons/83201

 

코딩테스트 연습 - 2주차

[[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" [[70,49,90],[68,50,38],[73,31,100]] "CFD"

programmers.co.kr


⊙ 문제

⊙ 제한사항

⊙ 입출력 예

⊙ 입출력 예 설명


 

⊙ 문제 접근 과정

 

먼저 자기 자신을 채점한 점수를 빼고 push 해준다.

그리고 받은 점수 중에서 가장 큰 값가장 작은 값을 자기 자신이 채점한 점수와 비교한다.

만약 유일한 최고점, 유일한 최저점이 아니면 push 하고 유일한 최고점유일한 최저점이라면 무시한다.

 

그리고 push되어 저장된 값들에 대해 평균을 계산하고 학점을 answer에 넣어주었다.

 

자세한 건 코드의 줄마다 주석을 달아놨다.


 

⊙ 문제 풀이

 

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

string solution(vector<vector<int>> scores) {
    string answer = "";
    for (int i=0;i<scores.size();i++) {
        vector<int> student;
        for (int j=0;j<scores.size();j++) {
            if (i!=j) student.push_back(scores[j][i]); //자기 자신 제외한 점수 push!
        }
             
        int max = *max_element(student.begin(), student.end()); //그 중 가장 큰 값
        int min = *min_element(student.begin(), student.end()); //그 중 가장 작은 값
        if (min <= scores[i][i] && scores[i][i] <= max)
            student.push_back(scores[i][i]); //유일한 최고점, 최저점이 아니면 push

        //평균 계산
        int avg = 0;
        for (int i=0;i<student.size();i++) avg+=student[i];
        avg/=student.size();
        //결과 입력
        if (90 <= avg) answer += 'A';
        else if(80 <= avg) answer += 'B';
        else if (70 <= avg) answer += 'C';
        else if (50 <= avg) answer += 'D';
        else answer += 'F';
    }
    return answer;
}

⊙ 마무리

 

 

NONE

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함