๐ซ ๋ฐฑ์ค 1065 (https://www.acmicpc.net/problem/1065)
1065๋ฒ: ํ์
์ด๋ค ์์ ์ ์ X์ ๊ฐ ์๋ฆฌ๊ฐ ๋ฑ์ฐจ์์ด์ ์ด๋ฃฌ๋ค๋ฉด, ๊ทธ ์๋ฅผ ํ์๋ผ๊ณ ํ๋ค. ๋ฑ์ฐจ์์ด์ ์ฐ์๋ ๋ ๊ฐ์ ์์ ์ฐจ์ด๊ฐ ์ผ์ ํ ์์ด์ ๋งํ๋ค. N์ด ์ฃผ์ด์ก์ ๋, 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , N๋ณด๋ค ์๊ฑฐ๋
www.acmicpc.net
๐ง Algorithm
1. ๋จผ์ ๋ฑ์ฐจ์์ด์ด์ด์ผ ํ๋ฏ๋ก ์๋ฆฌ์๊ฐ์ ๊ณต์ฐจ๊ฐ ๊ฐ์์ผ ํ๊ธฐ์ a-b์ b-c์ ๊ฐ์ด ๋์ผํด์ผํจ.
2. ์ด๋ฅผ ์ํด ํจ์ hansu๋ฅผ ๋ง๋ค์๊ณ ์ด๋ฅผ 100์์๋ฆฌ์์์ ์ฌ์ฉ.
3. 100~999๊น์ง ๊ธฐ์ค์ผ ๋ ๋ฑ์ฐจ์์ด์กฐ๊ฑด์ ๋ง์กฑ์์ผ์ผ ํ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ด ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
#include <iostream>
#include <algorithm>
using namespace std;
bool hansu (int num){
int a = num / 100;
int b = (num - a*100) / 10;
int c = num % 10;
return a-b == b-c;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int cnt = 0;
int num; cin >> num;
if (num <= 99){
cout << num;
}
else if (num >= 100 && num <= 999) {
for (int i = 100; i <= num; i++) {
cnt += hansu(i);
}
cout << cnt + 99;
}
else
cout << 144;
}
๐ซ ๋ฐฑ์ค 1978(https://www.acmicpc.net/problem/1978)
1978๋ฒ: ์์ ์ฐพ๊ธฐ
์ฒซ ์ค์ ์์ ๊ฐ์ N์ด ์ฃผ์ด์ง๋ค. N์ 100์ดํ์ด๋ค. ๋ค์์ผ๋ก N๊ฐ์ ์๊ฐ ์ฃผ์ด์ง๋๋ฐ ์๋ 1,000 ์ดํ์ ์์ฐ์์ด๋ค.
www.acmicpc.net
๐ง Algorithm _ ์์๋ฅผ ์ฐพ๋ ๋ฒ
1. a % b == 2๋ผ๋ ์์ ์ฝ์๋ฅผ ๊ตฌํ๋ ์์ด๋ฉฐ
2. ์ด ์ฝ์์ ๊ฐ์๋ฅผ ์ธ๋ cnt๋ผ๋ ๋ณ์๋ฅผ ์ด์ฉํด x์ ์ฝ์๊ฐ์๋ฅผ ๊ตฌํ๊ณ
3. ์์์ ํน์ง (์ฝ์์ ๊ฐ์๊ฐ 1๊ณผ ์๊ธฐ์์ )์ ์ด์ฉํด ์ฝ์ ๊ฐ์๊ฐ 2์ธ ์์ฐ์ ๊ฐ๋ค์ ์ธ์ค๋ค.
#include <iostream>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
int num; cin >> num;
int count = 0;
for (int i = 0; i < num; i++) {
int cnt = 0;
int x; cin >> x;
for (int j = 1; j <= x; j++)
if (x % j == 0)
cnt++;
if (cnt == 2)
count++;
}
cout << count << endl;
return 0;
}
๐ซ ๋ฐฑ์ค 2581(https://www.acmicpc.net/problem/2581)
2581๋ฒ: ์์
M์ด์ N์ดํ์ ์์ฐ์ ์ค ์์์ธ ๊ฒ์ ๋ชจ๋ ์ฐพ์ ์ฒซ์งธ ์ค์ ๊ทธ ํฉ์, ๋์งธ ์ค์ ๊ทธ ์ค ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค. ๋จ, M์ด์ N์ดํ์ ์์ฐ์ ์ค ์์๊ฐ ์์ ๊ฒฝ์ฐ๋ ์ฒซ์งธ ์ค์ -1์ ์ถ๋ ฅํ๋ค.
www.acmicpc.net
๐ง Algorithm _ ์์๋ฅผ ์ฐพ๋ ๋ฒ
1. a % b == 2๋ผ๋ ์์ ์ฝ์๋ฅผ ๊ตฌํ๋ ์์ด๋ฉฐ
2. ์ด ์ฝ์์ ๊ฐ์๋ฅผ ์ธ๋ cnt๋ผ๋ ๋ณ์๋ฅผ ์ด์ฉํด x์ ์ฝ์๊ฐ์๋ฅผ ๊ตฌํ๊ณ
3. ์์์ ํน์ง (์ฝ์์ ๊ฐ์๊ฐ 1๊ณผ ์๊ธฐ์์ )์ ์ด์ฉํด ์ฝ์ ๊ฐ์๊ฐ 2์ธ ์์ฐ์ ๊ฐ๋ค์ ์ธ์ค๋ค.
์ด๋ฅผ ์ด์ฉํด ๊ฐ๋ค์ ์ ์ฒด ํฉ์ ๊ตฌํด์ฃผ๊ณ ๊ฐ์ฅ ์ต์๊ฐ์ ์์ ์์๋๋ก vector์ ๋ฃ์ด์คฌ์ผ๋ฏ๋ก
๋น์ฐํ vector์ ์ฒซ๋ฒ์งธ ์์์ ๋ค์ด์๋ ๊ฐ์ด ์ต์๊ฐ์ด ๋๋ค.
#include <iostream>
#include <vector>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
int M, N; cin >> M >> N;
int sum = 0;
vector<int> v;
for (int i = M; i <= N; i++) {
int cnt = 0;
for (int j = 1; j <= i; j++)
if (i % j == 0)
cnt++;
if (cnt == 2){
v.push_back(i);
sum += i;
}
}
if (v.size() == 0)
cout << -1 << endl;
else {
cout << sum << endl;
cout << v[0] << endl;
}
}
๐ซ ๋ฐฑ์ค 10814(https://www.acmicpc.net/problem/10814)
10814๋ฒ: ๋์ด์ ์ ๋ ฌ
์จ๋ผ์ธ ์ ์ง์ ๊ฐ์ ํ ์ฌ๋๋ค์ ๋์ด์ ์ด๋ฆ์ด ๊ฐ์ ํ ์์๋๋ก ์ฃผ์ด์ง๋ค. ์ด๋, ํ์๋ค์ ๋์ด๊ฐ ์ฆ๊ฐํ๋ ์์ผ๋ก, ๋์ด๊ฐ ๊ฐ์ผ๋ฉด ๋จผ์ ๊ฐ์ ํ ์ฌ๋์ด ์์ ์ค๋ ์์๋ก ์ ๋ ฌํ๋ ํ๋ก๊ทธ๋จ์
www.acmicpc.net
๐ง Algorithm
STL ์ค ํ๋์ธ pair๋ฅผ ์ฌ์ฉํ๋ค.
(map์ ๊ฒฝ์ฐ, ๊ฐ์ด ๊ฒน์น๋ฉด ์ ์ฅ์ด ๋์ง ์๊ธฐ์ pair๋ฅผ ์ฌ์ฉํด ์ฃผ์๋ค.)
๋ํ stable_sort๋ผ๋ ํจ์๋ฅผ ์ฌ์ฉํด ์ฃผ์๋ค.
๊ทธ๋ฅ sort๋ฅผ ์งํํด์ฃผ๋ฉด ์ด๋ quick sort๋ฐฉ์์ ๋ถ์์ ํ ์ ๋ ฌ๋ฐฉ์์ด๋ค. (unstable sort ๋ฐฉ์)
์ฆ, ์์๊ฐ ๊ฐ๋ค๋ฉด ๋ฐ๋ ์ ์๋ ์ ๋ ฌ ๋ฐฉ์์ด๋ค.
๋ฐ๋ผ์ stable_sort๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์ด๋ merge sort๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ ๋ด์ฅํจ์์ด๊ธฐ์ ์ฌ์ฉํ๊ฒ ๋์๋ค.
๋ค๋ง, stableํ ์ ๋ ฌ๋ฐฉ์์ด unstableํ ์ ๋ ฌ ๋ฐฉ์๋ณด๋ค cost๊ฐ ๋๊ธฐ์ ํน๋ณํ stable ์ ๋ ฌ์ ๋ฐ๋์ ์ฌ์ฉํด์ผ ํ๋ ์ํฉ์๋ sort()๊ฐ ์๋, stable_sort()๋ฅผ ์ฌ์ฉํด์ฃผ๋ฉด ๋๋ค.
๋จ, ์ด ๋ฌธ์ ์ ํต์ฌ์ endl์ ์ฌ์ฉํ๋ฉด ์๊ฐ์ด๊ณผ๊ฐ ๊ฑธ๋ฆด ๊ฐ๋ฅ์ฑ์ด ๋์ "\n"์ ์ฌ์ฉํด์ผ ํ๋ค.
#include <iostream>
#include <algorithm>
using namespace std;
pair<int, string> p[100000];
bool compare (pair<int, string> p1, pair<int, string> p2) {
return p1.first < p2.first;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int num;
cin >> num;
for (int i = 0; i < num; i++) {
int num; string str; cin >> num >> str;
p[i] = { num, str };
}
stable_sort(p, p+num, compare);
for (int i=0; i<num; i++) {
cout << p[i].first << " " << p[i].second << "\n";
}
}