문제
먼저 전체 사람수 n을 입력받습니다.
그리고 n명의 (키,몸무게)를 순서대로 입력받습니다.
그 후에 각자의 덩치 순위를 빈칸으로 구분하여 출력해주는 문제입니다.
(덩치는 키,몸무게가 상대보다 둘 다 커야 덩치가 큰 판정입니다.)
풀이
(키,몸무게)를 쌍으로 입력받는다... 이건 std::pair를 쓰라고 만들어준 문제라고 보여집니다
#include<iostream>
//#include<utility> --> vector나 algorithm 헤더파일에 포함되어 있습니다.
#include<vector>
using namespace std;
//(x,y) = (몸무게, 키)
int main()
{
int n;
cin>>n;
vector<pair<int,int>> v;
//입력
for(int i=0; i<n; i++)
{
int x,y;
cin>>x>>y;
pair<int,int> temp=make_pair(x,y);
v.push_back(temp);
}
//등수 검사 및 출력
for(int i=0; i<n; i++)
{
int rank=1;
for(int j=0; j<n; j++)
{
if(v[i].first<v[j].first && v[i].second<v[j].second)
{
rank++;
}
}
cout<<rank<<" ";
}
}
참고로 pair를 사용하려면 utility헤더를 include해줘야 하는데, vector나 algorithm헤더파일에 포함되어 있습니다.
전 vector를 같이 사용하였기에 따로 추가해주지 않았습니다.
vector<pair<int,int>> v; 를 통해서 (몸무게,키)를 pair로 입력받은 후, 그것을 벡터에 push_back()해주는 방식으로 저장하였습니다.
등수 비교는 그냥 간단히 처음부터 마지막까지 for문을 통해서 전수검사를 하였습니다. (브루트포스 카테고리 문제)
크게 어려울건 없는 문제이고 pair클래스 사용법을 익히는 문제정도인 것 같습니다.
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
백준-영화감독 숌(1436번) (0) | 2022.08.14 |
---|---|
백준-체스판 다시 칠하기(1018번) (0) | 2022.08.12 |
백준-분해합(2231번) (0) | 2022.08.07 |
백준-블랙잭(2798번) (0) | 2022.08.06 |
백준-하노이 탑 이동 순서(11729번) (0) | 2022.08.05 |