반응형
문제 : https://www.acmicpc.net/problem/10814
서론
벡터에 문자열 입력하는데 다수의 시행착오를 겪었다.
char 자료형으로는 포인터로 문자열의 주소를 넣는 방법 말고는 모두 실패했다.
포인터로 넣으려면 라인을 입력받을때마다 새로운 변수명으로 동적할당을 해야하는데, 가능한지도 모르겠고 그냥 쉽게 string 자료형을 썼다.
또한 scanf로 string을 받아올 수 있는것 같긴 한데 정상적인 방법은 아닌것 같다.
아이디어
정렬 방법 : https://hydroponicglass.tistory.com/33
가입한 순서는 입력받은 순서를 저장하면 된다.
구현
그냥 cin, cout을 쓰면 시간초과가 뜬다.
ios_base::sync_with_stdio(0);
cin.tie(0);
가 필요하다.
또한 endl을 써도 시간초과이므로 '\n'을 사용한다.
//c++
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
typedef struct {
int age;
int num;
string name;
}s;
vector<s>v;
bool compare(s a, s b) {
if (a.age == b.age) {
return a.num < b.num;
}
else {
return a.age < b.age;
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
for (int i = 0; i < n; i++) {
int a;
string b;
cin >> a >> b;
v.push_back({ a, i, b });
}
sort(v.begin(), v.end(), compare);
for (int i = 0; i < n; i++) {
cout << v[i].age << " " << v[i].name << '\n';
}
}
최근댓글