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] 이 된다.
'알고리즘 > 프로그래머스 1단계' 카테고리의 다른 글
프로그래머스 - 잘라서 배열로 저장하기 - C++ (0) | 2023.08.27 |
---|---|
프로그래머스 - 치킨 쿠폰 - C++ (0) | 2023.08.24 |
프로그래머스 - 컨트롤 제드 - C++ (0) | 2023.08.14 |
프로그래머스 - 숨어있는 숫자의 덧셈(2) (0) | 2023.08.13 |
프로그래머스 - 가까운 수 - C++ (0) | 2023.08.13 |