알고리즘/프로그래머스 1단계

프로그래머스 - 등수 매기기 - C++

게임만드는학생 2023. 8. 17. 16:20

https://school.programmers.co.kr/learn/courses/30/lessons/120882

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

vector<int> solution(vector<vector<int>> score) {
    vector<int> answer(score.size(),1);
    
    for(int i=0;i<score.size();i++)
    {
        int t = score[i][0]+score[i][1];
        for(int j=0;j<score.size();j++)
        {
            if(t>(score[j][0]+score[j][1]))
                answer[j]++;
        }
    }
    
    return answer;
}

 

설명

 

등수를 매기기 위해서 이중 for문을 사용하였다.

첫번째로 answer 벡터를 1로 초기화한다. 

첫번째 사람의 점수를 기준으로 모든 사람의 점수를 비교한다. 

이 때, 첫 번째 사람보다 점수가 낮으면 값을 1 올린다. 즉 1등에서 밀려나는 것이다. 

이 처럼 모든 i를 기준으로 비교하면 점수가 낮을 때마다 1씩 증가하게 되니 자연스레 등수가 낮아지게 된다.

 

Ex)

첫번 째 사람이 두 개 합쳐서 150 이라 하자.

주어진 score 는 [[80, 70], [90, 50], [40, 70], [50, 80]] 

즉, 합한 숫자는 [150,140,110,130] 이다.

 

첫 번째 i 일 때 j 반복문을 돌면 

answer [1,2,2,2] 가 된다. 

 

마찬가지로 두 번째 사람을 기준으로 j 반복문을 돌면

answer [1,2,3,3] 이 된다.

 

이어서 answer [1,2,4,3] 이 된다.