๐งจ ๋ฐฑ์ค 1946๋ฒ
๋ฌธ์ ์ถ์ฒ : ๋ฐฑ์ค 1946๋ฒ - ์ ์ ์ฌ์
๋ฌธ์ ๋์ด๋ : ์ค๋ฒ1
๋ฌธ์ ๋งํฌ : www.acmicpc.net/problem/1946
1946๋ฒ: ์ ์ ์ฌ์
์ฒซ์งธ ์ค์๋ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T(1 ≤ T ≤ 20)๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค์ ์ฒซ์งธ ์ค์ ์ง์์์ ์ซ์ N(1 ≤ N ≤ 100,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ ์ค์๋ ๊ฐ๊ฐ์ ์ง์์์ ์๋ฅ์ฌ์ฌ ์ฑ
www.acmicpc.net
๐งจ ์๊ณ ๋ฆฌ์ฆ ์ ํ ๋ฐ C++ ์ฝ๋
์ด ๋ฌธ์ ์์ฒด๋ฅผ ์ดํดํ๋ ๊ฒ ํ๋ค์๋ค. ์ ํํ ์๊ธฐํ์๋ฉด ์ ๋ฐ๋ ์ง์์๋ค ์์์ ์กฐ๊ฑด์ ๋ฐ์ง๋๊ฒ ์๋๋ผ ์ง์์๋ค ์ ์ฒด์์ ์กฐ๊ฑด์ ๋ชจ๋ ๋ฐ์ ธ์ ์๋ฅ์ ๋ฉด์ ์ค ์ ์ด๋ ํ๋๊ฐ ๋ค๋ฅธ ์ง์์๋ณด๋ค ๋จ์ด์ง์ง ์๋ ์๋ง ์ ๋ฐํ๋ ๊ฒ์ด๋ค. ๋ค์ ๋งํด, ๋งค ์ง์์์ ๋ํด ๋ชจ๋ ์ง์์์ ์๋ฅ, ๋ฉด์ ์์๋ฅผ ๋น๊ตํ๊ณ ํ ์ฌ๋์๊ฒ๋ผ๋ ์๋ฅ, ๋ฉด์ ์ ์๋ฒฝํ๊ฒ ๋ฐ๋ฆฌ๋ฉด ์ ๋ฐ๋์ง ์๋ ๊ฒ์ด๋ค. ๋ฌธ์ ์ดํด๊ฐ ํ๋ค์์ง๋ง ์์ผ๋ก ๊ทธ๋ฆฌ๋ฉด์ ์์ ์ ์ถ๋ ฅ์ ๋ฐ์ ธ๋ณด๋ ๋ก์ง์ ์๊ฐ๋ณด๋ค ์ฌ์ ๋ค.
์ผ๋จ ์๋ฅ ์์ - ๋ฉด์ ์์ ์์๋ก ์ ์ฒด ์ง์์๋ฅผ ์ ๋ ฌํ๋ค. ์ด๋ ๋งจ ์ฒซ๋ฒ์งธ ์ง์์๋ ๋ชจ๋ ์ง์์๋ค์ ๋นํด ์๋ฅ์์ ์ฐ์ํ๋ฏ๋ก ๋ฌด์กฐ๊ฑด ํฉ๊ฒฉ์ด๋ค. ์๋ฅ๋ ์ ๋ ฌ๋ ์ํ์ด๋ฏ๋ก ๋ด๊ฐ ํญ์ ๋ท์ฌ๋๋ณด๋ค ์ฐ์ํ๋ค. ๊ทธ๋ผ ์ด๋ ๋ฐ์ ธ๋ณด์์ผ ํ ๊ฒ์ ๋ฉด์ ์์์ด๋ค. ๋ง์ฝ ๋ด๊ฐ ์ ์ฌ๋๋ณด๋ค ์๋ฅ๋ ๋ฎ์ง๋ง ๋ฉด์ ์ด ๋์ผ๋ฉด ํฉ๊ฒฉ์ธ ๊ฒ์ด๋ค. (์ด๋ ์์๊ฐ ๋์๊ฑด 1๋ฑ์ ๊ฐ๊น์ด ๊ฒ์ ๋งํจ) ๊ทธ๋์ ์ ์ฒด ์ ๋ ฌ ํ๋ฒ, ์ด์ ์ฌ๋๊ณผ ๋ด ๋ฉด์ ์์ ๋น๊ต๋ก ๊ฐ๋จํ๊ฒ ํ ์ ์๋ค.
#include <iostream>
#include <vector>
#include <algorithm>
#include <utility>
using namespace std;
int main()
{
cin.tie(NULL);
ios::sync_with_stdio(false);
int t;
cin >> t;
for(int i = 0; i < t; i++) {
int n;
cin >> n;
vector<pair<int, int>> applicant(n);
for(int j = 0; j < n; j++) {
cin >> applicant[j].first >> applicant[j].second;
}
sort(applicant.begin(), applicant.end());
int sum = 1;
int target = applicant[0].second;
for(int k = 1; k < n; k++) {
if(target > applicant[k].second) {
target = applicant[k].second;
sum++;
}
}
cout << sum << '\n';
}
}
๐งจ ๋ฐฑ์ค 11000๋ฒ
๋ฌธ์ ์ถ์ฒ : ๋ฐฑ์ค 11000๋ฒ - ๊ฐ์์ค ๋ฐฐ์
๋ฌธ์ ๋์ด๋ : ๊ณจ๋5
๋ฌธ์ ๋งํฌ : www.acmicpc.net/problem/11000
11000๋ฒ: ๊ฐ์์ค ๋ฐฐ์
์ฒซ ๋ฒ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 200,000) ์ดํ N๊ฐ์ ์ค์ Si, Ti๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ Si < Ti ≤ 109)
www.acmicpc.net
๐งจ ์๊ณ ๋ฆฌ์ฆ ์ ํ ๋ฐ C++ ์ฝ๋
์ผ๋จ ๊ฐ์ ์์์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํด์ผํ๋ค. (๋๋๋ ์๊ฐ์ผ๋ก ๋น๊ตํ๋ฉด ์ ๋จ) 2๊ฐ์ ๋ฐฐ์ด์ด ํ์ํ๋ฐ, ํ๋๋ ๊ฐ ๊ฐ์์ค์ ๋๋๋ ์๊ฐ์ด ๊ธฐ๋ก๋ ๋ฐฐ์ด๊ณผ, ๋ ํ๋๋ ๋ชจ๋ ๊ฐ์์ ์์๊ณผ ๋๋๋ ์์ ์ ์ ์ฅํ ๋ฐฐ์ด์ด๋ค.
1) ๋ชจ๋ ๊ฐ์์ ์์์๊ฐ๊ณผ ๊ฐ ๊ฐ์์ค์ ๋๋๋ ์๊ฐ์ ๋น๊ตํ๋ฉด ๋๋ค๊ณ ์๊ฐํด ์ด์ค ๋ฃจํ๋ก ๋น๊ต์ ์ ๋ ฌ์ ๋ฐ๋ณตํด ๊ตฌํํ์ผ๋ ์๊ฐ์ด๊ณผ๊ฐ ๋ด๋ค.. ๋จ์ํ ์ด์ค ๋ฃจํ๊ฐ ์๊ฐ์ ๋ง์ด ์ก์๋จน์๋ค๊ธฐ ๋ณด๋ค๋ ์ ๋ ฌ์ด ๋ฌธ์ ์๋ค. ์ ๋ ฌ์ ์ค์ด๋ ค๋ฉด ๋ฐ๋ณต๋ฌธ์ 1๋จ ์ง๋ฆฌ๋ก ๋ฐ๊ฟ์ผํ๋ค. ๋๋ฆ push์ pop์ ์ด์ฉํด๋ณด๋ ค ํ์ผ๋ ์ด์จ๊ฑฐ๋ ์ ๋ ฌ์ด ํ์ํ๋ค. (์ ๋ ฌ๋ก ๊ฐ์ฅ ์์ ๊ฐ์ ์ฐพ์์ผ ํ๋ค)
2) ์ ๋ ฌ์ ์ค์ด๋ ค๋ฉด ์ฝ์ ๋์๋ง์ ์ ๋ ฌ์ด ์๋์ผ๋ก ๋๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์จ์ผํ๋๋ฐ C++์์ ๊ทธ๋ฐ ์๋ฃ๊ตฌ์กฐ๊ฐ ์๋์ง ์ ๋ชฐ๋๊ธฐ์ ๋ฌธ์ ์ ํํธ๋ฅผ ๋ดค๋ค. ํํธ๋ ์๋ฃ๊ตฌ์กฐ, ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ, ์ ๋ ฌ, ์ฐ์ ์์ ํ ๋ก ์ฌ์ฉํ ์๊ณ ๋ฆฌ์ฆ๊ณผ ์๋ฃ๊ตฌ์กฐ๊ฐ ๋ด๊ฒจ์์๋๋ฐ ๋ค๋ฅธ ๊ฑด ๋ค ์ฌ์ฉํ๊ณ ์์๊ณ , ์ฐ์ ์์ ํ๋ฅผ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค. ์ฐ์ ์์ ํ(priority_queue)์ ๋ํด์๋ ๊ฐ๋จํ ์๋ฃ๊ตฌ์กฐ๋ผ์ ๊ธ๋ฐฉ ์ฐพ์๋ณด๊ณ ๋์ด๊ฐ๋ค. ๋ค์์.. ์ธ์ ๊ฐ.. ์๋ฃ๊ตฌ์กฐ ํํธ๋ ์ ๋ฆฌํ ๊ธฐํ๊ฐ ์๊ธธ ๋ฐ๋๋ค.
์ด์จ๊ฑฐ๋ ์ฐ์ ์์ ํ(์ค๋ฆ์ฐจ์์ผ๋ก)๋ฅผ ์ฌ์ฉํ ๋๋ถ์ ์ ๋ ฌ์ ์ด๊ธฐ ํ ๋ฒ๋ง ํ๋ฉด ๋์๋ค. ํ์ top ์์์ ๋น๊ตํ๋ฉด ๋๋ ๊ฒ์ด ํต์ฌ์ธ ๊ฑฐ ๊ฐ๋ค. ์๋ง ์ด ๋ฌธ์ ์ ์๊ฐ๋ณต์ก๋๋ nlogn ์ ๋ ฌ ํ๋ฒ์ด ํฌํจ(sortํจ์)๋๋ nlogn์ด๋ผ๊ณ ํ๋จํด๋ณธ๋ค.
#include <iostream>
#include <vector>
#include <algorithm>
#include <utility>
#include <queue>
using namespace std;
int main()
{
int n;
scanf("%d", &n);
priority_queue<int, vector<int>, greater<int>> room;
vector<pair<int, int>> lecture(n);
for(int i = 0; i < n; i++) {
scanf("%d %d", &lecture[i].first, &lecture[i].second);
}
sort(lecture.begin(), lecture.end());
room.push(lecture[0].second);
for(int i = 1; i < n; i++) {
if(room.top() <= lecture[i].first) {
room.pop();
room.push(lecture[i].second);
}
else {
room.push(lecture[i].second);
}
}
printf("%d", room.size());
return 0;
}
๊ณจ๋๋ ๊ฑฐ์ ํ์ด๋ณธ ์ ์ด ์๋๋ฐ.. ๋ฌดํฑ๋๊ณ ๋์ ํด๋ดค์ง๋ง ๋์์ง์๊ฒ ํ์ด๋๋ค. ์๋ฃ๊ตฌ์กฐ ๊ณต๋ถํ์!
๐งจ ๋ฐฑ์ค 1931๋ฒ
๋ฌธ์ ์ถ์ฒ : ๋ฐฑ์ค 1931๋ฒ - ํ์์ค
๋ฌธ์ ๋์ด๋ : ์ค๋ฒ2
๋ฌธ์ ๋งํฌ : www.acmicpc.net/problem/1931
1931๋ฒ: ํ์์ค ๋ฐฐ์
(1,4), (5,7), (8,11), (12,14) ๋ฅผ ์ด์ฉํ ์ ์๋ค.
www.acmicpc.net
๐งจ ์๊ณ ๋ฆฌ์ฆ ์ ํ ๋ฐ C++ ์ฝ๋
๊ฐ์ ๊ทธ๋ฆฌ๋ ๋ฌธ์ ์ฌ๋ ํ์คํ ๋์ด๋๊ฐ ์์์ ๋๊ผ๋ค. ์ฒ์์๋ ํ์ ์์์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํด์ผ ๋๋ค๊ณ ์๊ฐํ๋๋ฐ ์ด์จ๊ฑฐ๋ ํ์์ค์์ ํ ์ ์๋ ํ์์ ์ต๋ ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ฏ๋ก ํ์ ์ข ๋ฃ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ผ ํ๋ค. ์์์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํด์ ์ฝ๋๋ฅผ ์ง๋ณด๋ 87% ๋ถ๊ทผ์์ 'ํ๋ ธ์ต๋๋ค'๋ก ์ฑ์ ๋์๋ค. ์๋ง ์ผ๋ถ ๋ฐ๋ก๋ฅผ ๋ง์กฑ์ํค์ง ๋ชปํ๋ ๊ฒ ๊ฐ์๋ค. ๊ทธ๋์ ๊ทธ๋ฆฌ๋ ๋ฌธ์ ๋ต๊ฒ ํ์ ์ข ๋ฃ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ๊ฒฐ๊ณผ ํต๊ณผํ ์ ์์๋ค.
#include <iostream>
#include <vector>
#include <algorithm>
#include <utility>
using namespace std;
// b - a ์์ผ๋ก ์ค๋ฆ์ฐจ์
bool compare(pair<int, int> a, pair<int,int> b) {
if(a.second == b.second) {
return a.first < b.first;
}
else {
return a.second < b.second;
}
}
int main()
{
int N;
cin >> N;
vector<pair<int, int>> meeting(N);
for(int i = 0; i < N; i++) {
cin >> meeting[i].first >> meeting[i].second;
}
sort(meeting.begin(), meeting.end(), compare);
int sum = 1;
int start = meeting[0].first;
int end = meeting[0].second;
for(int i = 1; i < N; i++) {
// ๋ค์ ์๊ฐ๋ ํ์๋ก ๋์ด๊ฐ๋ค
if(end <= meeting[i].first) {
start = meeting[i].first;
end = meeting[i].second;
sum++;
}
}
printf("%d", sum);
}
๐งจ ๋ฐฑ์ค 12845๋ฒ
๋ฌธ์ ์ถ์ฒ : ๋ฐฑ์ค 12845๋ฒ - ๋ชจ๋์ ๋ง๋ธ
๋ฌธ์ ๋์ด๋ : ์ค๋ฒ3
๋ฌธ์ ๋งํฌ : www.acmicpc.net/problem/12845
12845๋ฒ: ๋ชจ๋์ ๋ง๋ธ
์๊ด์ด๋ ๊ฒ์์ ์ข์ํ๋ค. ๋ณ์๋ณ ๊ฒ์์ ๋ค ํ์ง๋ง ๊ทธ ์ค์์ ์ ์ผ ์ข์ํ๋ ๊ฒ์์ ๋ชจ๋์ ๋ง๋ธ์ด๋ค. ์ด๊น์์ด ์ค๋๋ ์๊ด์ด๋ ํ๊ต ๊ฐ๋ ๋ฒ์ค์์ ์บ๋ฆญํฐ ํฉ์ฑ ์ด๋ฒคํธ๋ฅผ ์ฐธ์ฌํ๋ค. ์ด๋ฒ ์ด
www.acmicpc.net
๐งจ ์๊ณ ๋ฆฌ์ฆ ์ ํ ๋ฐ C++ ์ฝ๋
์ผ๋จ ์์ ๋ฌธ์ ๋ค์ ๋นํด ๊ต์ฅํ ๊ฐ๋จํ๊ฒ ํ์๋ค. ์ญ์๋ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๊ณ , ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ ์ฌ์ฉํ๋ค. ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ sort(begin(), end(), greater<type>()) ํ์ผ๋ก ์์ฑํ๋ค.
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ค์ด๊ณ ์ ์ฒ์์ ์ ๋ ฅ๋ฐ์ ์นด๋ ๋ ๋ฒจ๋ค์ ๋ฒกํฐ์ ์นด๋ํฉ์ฑ ๊ฒฐ๊ณผ๋ฅผ ๋ฎ์ด์์ ๋ค.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int N;
cin >> N;
vector<int> meeting(N);
for(int i = 0; i < N; i++) {
cin >> meeting[i];
}
sort(meeting.begin(), meeting.end(), greater<int>());
long long gold = 0;
for(int i = 0; i < N - 1; i++) {
gold += meeting[i] + meeting[i + 1];
meeting[i + 1] = max(meeting[i], meeting[i + 1]);
}
printf("%lld", gold);
}
'Problem Solving > BOJ ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] ๋ฐฑ์ค 2644๋ฒ ์ด์๊ณ์ฐ (C++ ์ฝ๋) (0) | 2021.01.22 |
---|---|
[BOJ] ์ ์ถ๋ ฅ๋ฌธ์ - getline, cin, %1d (0) | 2021.01.13 |
[BOJ] C++ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด (2) (0) | 2021.01.11 |
[BOJ] C++ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด (1) (0) | 2021.01.11 |
[BOJ] ๊ธฐ๋ณธ๊ตฌํ๋ฌธ์ - 2490๋ฒ, 2864๋ฒ (C++ ์ฝ๋) (0) | 2021.01.10 |