# 문제
# 입력 및 출력
# 풀이
문제가 너무 쉬워서 그냥 풀고 블로그에 올리진 않으려고 했는데 문제를 하나 발견해서 쓰게 됐다
1) 처음에 작성한 코드
#include <iostream>
#include <algorithm>
#include <vector>
#pragma warning (disable:4996)
using namespace std;
int main() {
int n;
cin >> n;
vector<pair<int,int>> coo;
for (int i = 0; i < n; i++) {
int x, y;
scanf("%d %d", &x, &y);
coo.push_back(make_pair(x, y));
}
sort(coo.begin(), coo.end());
while(!coo.empty()){
printf("%d %d\n", coo.front().first, coo.front().second);
coo.erase(coo.begin());
}
}
이렇게 쓰니까 시간초과가 뜨더라
무슨 문젠가 싶어서 읽어보다가 erase연산이 오래 걸리나 싶어서 찾아보니까
erase연산은 해당 인덱스의 요소를 지우고 모든 요소를 재배치하기 때문에 연산이 오래 걸린다고 한다
http://www.cplusplus.com/reference/vector/vector/erase/
vector::erase - C++ Reference
123456789101112131415161718192021222324 // erasing from vector #include #include int main () { std::vector myvector; // set some values (from 1 to 10) for (int i=1; i<=10; i++) myvector.push_back(i); // erase the 6th element myvector.erase (myvector.begin(
www.cplusplus.com
https://www.acmicpc.net/board/view/26496
글 읽기 - (C++)vector를 쓰면 시간이 오래걸리는건가요?
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
△ 문제에 대한 답변
그래서 내림차순 정렬해서 erase대신 pop_back()을 사용해보았다
#include <iostream>
#include <algorithm>
#include <vector>
#pragma warning (disable:4996)
using namespace std;
int main() {
int n;
cin >> n;
vector<pair<int,int>> coo;
for (int i = 0; i < n; i++) {
int x, y;
scanf("%d %d", &x, &y);
coo.push_back(make_pair(x, y));
}
sort(coo.begin(), coo.end(), greater<>());
while (!coo.empty()) {
printf("%d %d\n", coo.back().first, coo.back().second);
coo.pop_back();
}
}
재배치가 이루어지지 않아서 시간초과가 뜨지 않았음
#include <iostream>
#include <algorithm>
#include <vector>
#pragma warning (disable:4996)
using namespace std;
int main() {
int n;
cin >> n;
vector<pair<int,int>> coo;
for (int i = 0; i < n; i++) {
int x, y;
scanf("%d %d", &x, &y);
coo.push_back(make_pair(x, y));
}
sort(coo.begin(), coo.end());
for (int i = 0; i < n; i++) {
printf("%d %d\n", coo.at(i).first, coo.at(i).second);
}
}
이 문제에선 굳이 삭제 연산이 필요하지 않기 때문에 그냥 인덱스로 접근해서 출력만 해도 됨
'Algorithm > 📖Baekjoon' 카테고리의 다른 글
#10815 숫자 카드 (0) | 2022.05.15 |
---|---|
#18870 좌표 압축 (0) | 2022.05.13 |
#2108 통계학 (0) | 2022.05.12 |
#10989 수 정렬하기 3 (0) | 2022.05.12 |
#1436 영화감독 숌 (0) | 2022.05.12 |
댓글