본문 바로가기
Problem Solving

[C++] [백준 10814] 나이순 정렬

by tls1107 2021. 7. 27.
728x90
반응형


문제 풀기 전 생각 : 

/*
이 문제 또한 정렬 함수를 커스터마이징? 하는 문제인듯 하다.
나이와 이름 두가지 정보가 입력되니 클래스를 만들어 사용하던지 
pair 컨테이너?를 사용하면 된다.
나는 페어를 사용하기러 했다.
나이가 같다면 기존의 순서를 유지하면 되니
stable_sort() 함수를 사용하면 된다.
*/

#include <iostream>
#include <algorithm>
#include <vector>
#include <utility>
using namespace std;

bool compare( pair<int,string> v1, pair<int,string> v2 ) {
  return v1.first < v2.first; 
}

int main(){
  int n;
  cin >> n;
  vector<pair<int,string>> v(n);

  for(int i=0 ; i<n ; i++){
    cin >> v[i].first >> v[i].second;
  }

  stable_sort(v.begin(),v.end(),compare);

  for(int i=0 ; i<n ; i++){
    cout << v[i].first << " " << v[i].second << "\n";
  }
  return 0;
}

https://www.acmicpc.net/problem/10814

 

10814번: 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을

www.acmicpc.net


풀 때 어려웠던 점 또는 느낀점 :

페어 를 사용하는 것이 익숙하지 않아

조금 남감했지만 한번 해보니 어렵지 않다고 느꼈다

페어 앞으로 애용해주지~후후


개선방안 :

using namespace std;

queue<string> person[201];

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int N;
	int age;
	string name;

	cin >> N;

	for(int i=0; i<N; i++){
		cin >> age;
		cin >> name;
		person[age].push(name);
	}
	for (int i = 1; i < 201; i++) {
		while (!person[i].empty()) {
			cout << i << ' ' << person[i].front() << '\n';
			person[i].pop();
		}
	}
}

신박하다 큐를 201개나 만들어서 

나이마다 해당하는 큐에 푸쉬했다

그리고 나이별로 출력하면 문제를 해결할 수 있다.

신박하다 호오

728x90
반응형

댓글