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

Algorithm|2022. 1. 24. 20:05
반응형

 

 

10814번: 나이순 정렬

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

www.acmicpc.net

이름 벡터 100개를 생성한 후, 나이에 해당하는 벡터에 입력해주는 알고리즘은

시간 초과로 실패했다

이유를 찾아보니, sort를 사용해야 했다.

 

int main()
{
  int n;
  vector<vector<string>> name;

  cin >> n;

  for(int i=0; i<200; i++)
  {
    vector<string> v;
    name.push_back(v);
  }

  for(int i=0; i<n; i++)
  {
    int old;
    string s;
         
    cin >> old >> s;
    name[old-1].push_back(s);
  }

  for(int i=0; i<200; i++)
      for(int k=0; k<name[i].size(); k++)
        cout << i+1 << " "<< name[i][k] << endl;
  
	return 0;
}

 

class와 sort를 사용해 풀었는데, 정답대로 잘 나오지만, 왜 틀렸는지는 알 수가 없다...

로직에는 문제가 없는데,,,, 백준 억까 멈춰!

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

class people
{
    public: 
        int age;
        string name;
 
};

bool cmp(people a, people b) 
{
	if (a.age < b.age) return true;
	else return false;
}



int main()
{
  ios::sync_with_stdio(false);
  int n;
  cin >> n;
  people p[n];

  for(int i=0; i<n; i++)
  {
    int old;
    string s;
         
    cin >> old >> s;
    p[i].age = old;
    p[i].name = s;
  }
  
  sort(p,p+n,cmp);
  
  for(int i=0; i<n; i++)
    cout << p[i].age << " " << p[i].name << endl; 
	return 0;
}
반응형

댓글()