

2022๋
10์ 27์ผ์ ์งํํ SKKU ํ๋ก๊ทธ๋๋ฐ ๋ํ.
ํ๋์ ๋๋ ๋ ํ์ด๋ณผ๋ง ํ๋๋ฐ ๋งํ์ ์ง์ค๋ ฅ์ ์๊ณ 4์.. (์ด๋ก ์ ์
์ )
๊ทธ๋๋ ์ฌํด ์ด์ ์ฐธ๊ฐํ๋ ๋ํ๋ณด๋ค๋ ํ ๋ฌธ์ ๋ ํ์๋ค.
๋ด๋
์๋ 5์ ์ด์ ํ๊ณ 10๋ฑ ์์ ๋ค ์ ์์ง ์์๊น?
A ์๋ ํด๋ ์คํํธ๋ผ ์ธ์์์ ์ ์ผ๊ฐ๋ ํฌํ ์ดํ ์นฉ
๋ด์ผ ํ๋ ๋ชฉ์๋ฆฌ ๋ฅผ 1์ฉ ๋๋ฆฌ๋ฉด์ ํ์ธํด๋ณด๋ฉด ๋๋ค. ๋ฒ ์ฌ๋๊น์ง ๋๋ฌํ ๊ฒฝ์ฐ 1๋ฒ ์ฌ๋๋ถํฐ ๋ค์ ์งํํ ์ ์๋๋ก ์ธ๋ฑ์ค๋ฅผ ๋ฐ๊ฟ์ค๋ค.
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, x;
cin >> n >> x;
vector<int> v(n);
for (auto& num : v) {
cin >> num;
}
int cur = 0;
while (1) {
if (v[cur] < x) {
cout << cur+1 << '\n';
break;
}
cur++;
x++;
if (cur == n) cur = 0;
}
return 0;
}
B ์ฅ์ธ์ ๋๊ตฌ๋ฅผ ํํ์ง ์๋๋ค
๋ง์น 9๊ฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๊ณ , ๊ณฑ์ ์ฐ์ฐ์ด๋ฏ๋ก ์์์ ๊ด๊ณ์์ด ๊ฐํ ํ๋ฅ ์ด ๊ฐ์ฅ ๋ฎ์ ๋ง์น๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ง์น 9๊ฐ๋ฅผ ์ ํํ๋ฉด ๋๋ค.
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout << fixed << setprecision(7);
vector<ld> v(10);
for (auto& x : v) {
cin >> x;
}
sort(v.begin(), v.end());
ld ans = 1e9;
for (int i = 1; i < 10; i++) {
ans = ans * v[i] / i;
}
cout << ans << '\n';
return 0;
}
C ์๋ ต์ ์๊ฐ์ด๋ค!
ํ์ฌ ๊ฐ์ง ๋์ผ๋ก ์ฐฉ์ฉํ ์ ์๋ ๋ชจ๋ ๋ฐฉ์ด๊ตฌ์ ์กฐํฉ์ ์๋ํ๋ค. ์ด ๋ ๋ฐฉ์ด๊ตฌ๋ฅผ ์ฐฉ์ฉํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๋ ๊ณ ๋ คํด์ผ ํ๋ค. ์ ๋ ฅ๋ฐ์ ๋ฐฉ์ด๊ตฌ์ ์๋ฌด๋ฐ ํจ๊ณผ๋ ์๊ณ ๊ฐ๊ฒฉ๋ 0์ธ ๋๋ฏธ ๋ฐฉ์ด๊ตฌ ํ๊ฐ์ฉ์ ์ถ๊ฐํด์ฃผ๋ฉด ํธํ๊ฒ ๊ตฌํํ ์ ์๋ค. ๋ง์ฝ ๊ฐํ๊น์ง ๊ฐ๋ฅํ๋ค๋ฉด, ํ์ฌ ์ฐฉ์ฉํ ๋ฐฉ์ด๊ตฌ์ ๋ํด ์ ๋ถ ์๋ํด๋ณธ๋ค. ์คํฌ ๋ ๋ฒจ ์ฆ๊ฐ๋์ ์ฌ๋ฆด ์คํฌ๊ณผ ๋ด๋ฆด ์คํฌ๋ ์ ๋ถ ์๋ํด๋ณธ๋ค. ์ค์ํ ์ฌ์ง๊ฐ ๊ต์ฅํ ๋ง์ ๋ฌธ์ ๋ค.
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int t, k;
vector<vector<int>> skills(5);
vector<vector<pair<int, vector<int>>>> items(3);
int calculate(int money, pair<int, vector<int>> &item1, pair<int, vector<int>> &item2, pair<int, vector<int>> &item3) {
int tc = item1.first + item2.first + item3.first;
if (tc > money) return -1;
int ret = 0;
vector<int>lv(5);
for (int i = 0; i < 5; i++) {
lv[i] = item1.second[i] + item2.second[i] + item3.second[i];
ret += skills[i][min((int)skills[i].size()-1, lv[i])];
}
if (money - k >= tc) {
for (int i = 0; i < 5; i++) { // down
if (!lv[i]) continue;
lv[i]--;
for (int j = 0; j < 5; j++) { // up
if (i == j) continue;
lv[j]++;
int tmp = 0;
for (int k = 0; k < 5; k++) {
tmp += skills[k][min((int)skills[k].size()-1, lv[k])];
}
ret = max(ret, tmp);
lv[j]--;
}
lv[i]++;
}
}
return ret;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> t >> k;
for (auto& v : skills) {
int sz;
cin >> sz;
v.push_back(0);
for (int i = 0; i < sz; i++) {
int x;
cin >> x;
v.push_back(x);
}
}
for (auto& v : items) {
int sz;
cin >> sz;
v.resize(sz+1);
v[0].first = 0;
for (int i = 0; i < 5; i++) {
v[0].second.push_back(0);
}
for (int i = 1; i <= sz; i++) {
cin >> v[i].first;
}
for (int i = 1; i <= sz; i++) {
for (int j = 0; j < 5; j++) {
int x;
cin >> x;
v[i].second.push_back(x);
}
}
}
int ans = 0;
for (int i = 0; i < items[0].size(); i++) {
for (int j = 0; j < items[1].size(); j++) {
for (int k = 0; k < items[2].size(); k++) {
ans = max(ans, calculate(t, items[0][i], items[1][j], items[2][k]));
}
}
}
cout << ans << '\n';
return 0;
}
D ์๊ณผ ๋๋
์ฒซ ๋ฒ์งธ ๋ ์๋ ํญ์ ์์ด ๋์ฐฉํ๊ณ , ๋ง์ง๋ง ๋ ์๋ ํญ์ ๋๋์ ์๊ฐ ์์ ์๋ณด๋ค ๋ง๊ณ , ํ๋ฃจ์ ๋๋ ํน์ ์์ด ํ ๋ง๋ฆฌ์ฉ ๋์ฐฉํ๊ธฐ ๋๋ฌธ์ 1๋ฒ์งธ ๋ ๋ถํฐ ๋ฒ์งธ ๋ ์ค ์ ์ด๋ ํ๋ฃจ ์ด์ ๋๋์ ์์ ์๊ฐ ๊ฐ์์ง๋ค.
- ์ด๊ณ , ๋ผ ํ์.
- ๋ฒ์งธ ๋ ์ ์๊ณผ ๋๋์ ์๊ฐ ๊ฐ๋ค๋ฉด ๋ฒ์งธ ๋ ์ด ์ ๋ต์ด๋ค.
- ๋ฒ์จฐ ๋ ์ ์์ด ๋ ๋ง๋ค๋ฉด, ๋ฒ์งธ ๋ ๊ณผ ๋ฒ์งธ ๋ ์ฌ์ด์ ์ ๋ต์ด ์กด์ฌํ๋ค.
- ๋ฒ์งธ ๋ ์ ๋๋๊ฐ ๋ ๋ง๋ค๋ฉด ๋ฒ์งธ ๋ ๊ณผ ๋ฒ์งธ ๋ ์ฌ์ด์ ์ ๋ต์ด ์กด์ฌํ๋ค.
์ธํฐ๋ํฐ๋ธ ๋ฌธ์ ๋ผ ์ถ๋ ฅ ์ดํ ๋ฒํผ๋ฅผ
flushํด์ผ ํ๋ค.
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
int lo = 1, hi = n, cnt;
while (lo <= hi) {
int mid = (lo + hi) / 2;
cout << "? " << mid << endl;
cin >> cnt;
if (cnt*2 > mid) lo = mid + 1;
else if (cnt*2 < mid) hi = mid - 1;
else {
cout << "! " << mid << endl;
break;
}
}
return 0;
}
E ์์ด์ ํฉ
ย ๋ - ์ด๋ฏ๋ก ์ ๊ตฌํ๋ฉด ๋๋ค. ย ์ด๋ค ์์ ์ ์ ๋ ์ ๊ณผ ์ฌ์ด์ ์กด์ฌํ๋ ์ ๋ฐฐ์์ ๊ฐ์๋งํผ ๊ธฐ์ฌํ๋ค. ํ์์ด๋ฉด ๋งํผ, ์ง์์ด๋ฉด ๋งํผ ๊ธฐ์ฌํ๋ค. ๋ฐฐ์๋ฅผ ์ผ์ผํ ๊ตฌํ๋ฉด ์๊ฐ ์ด๊ณผ๋ฅผ ๋ฐ์ ์ ์๋ค.
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int solve(int n) {
int ret = 0;
for (int i = 1; i <= n; i++) {
int x = (i%2) ? -1 : 1;
ret += (n/i)*x;
}
return ret;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int s, t;
cin >> s >> t;
cout << solve(t) - solve(s-1) << '\n';
return 0;
}
F ์ํ์ ๊ณ์ ์ด๋ค!
๋ฅผ ๊ณ ์ ์์ผ ๋๊ณ , ์ฃผ์ด์ง ์
๋ ฅ์ ๋ฐ๋ผ๊ฐ๋ฉด ์ด ๋ช ๊ฐ์ ์๋ฌผ์ ์ํํ ์ ์๋์ง ๋์จ๋ค. Parametric Search ๊ฐ๋ฅ. ์ธํธ ์ ์งํ ํ์ ์ด ์ต๋ ์ด๋ฏ๋ก ๋งค๋ฒ ๊ธธ์ ๋ฐ๋ผ๊ฐ๋ฉด ์๊ฐ ์ด๊ณผ๋ฅผ ๋ฐ๊ฒ ๋๊ณ , ๋ฏธ๋ฆฌ ์ขํ๋ง๋ค ์ธ์ ๋์ฐฉํ๋์ง ์ ์ฒ๋ฆฌ๋ฅผ ํ ํ์๊ฐ ์๋ค.
์ด๊ณ , ๋ผ์ 2์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ค ์ ์๋ค. map์ ์ขํ์ ๋ฐฉ๋ฌธ ์์ ์ ๊ธฐ๋กํ๋ค. ๋งค๋ฒ 2์ฐจ์ ๋ฐฐ์ด์ ๊ธฐ๋กํ๋๋ฐ map์ ์ฐ๋ ๋ฐฉ์๋ ์์๋ฌ์ผ๊ฒ ๋ค.
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, k;
cin >> n >> k;
vector<pair<char, int>> v(n);
for (auto& [a, b] : v) {
cin >> a >> b;
}
map<pair<int, int>, vector<int>> m;
map<char, pair<int, int>> mm;
mm['N'] = {1, 0};
mm['S'] = {-1, 0};
mm['E'] = {0, 1};
mm['W'] = {0, -1};
int y = 0, x = 0, t = 0;
for (auto& [a, b] : v) {
auto& [dy, dx] = mm[a];
for (int i = 0; i < b; i++) {
y += dy;
x += dx;
m[{y, x}].emplace_back(++t);
}
}
int lo = 0, hi = 1000000;
while (lo <= hi) {
int cnt = 0;
int mid = (lo + hi) / 2;
for (auto& [p, v] : m) {
for (int i = 0; i < v.size()-1; i++) {
for (int j = i+1; j < v.size(); j++) {
if (v[j] - v[i] < mid) continue;
else {
cnt++;
i = j-1;
break;
}
}
}
}
if (cnt < k) hi = mid - 1;
else lo = mid + 1;
}
cout << hi << '\n';
return 0;
}