반응형

Problem Solving/Codeforces 12

[코드포스 / Codeforces] Round #901 (Div. 2)

Codeforces Round #901 (Div. 2) 문제 세트는 여기서 확인할 수 있다. 문제 A. Jellyfish and Undertale (AC+1 / 38 min) 더보기 타이머가 1초일 때마다 가장 작은 도구를 써주면 된다. 사실 풀이의 이유는 모르지만 직접 손으로 써보고 찾은 규칙대로 코드를 짰다. #include using namespace std; #define int long long signed main() { cin.tie(0)->sync_with_stdio(0); int t; cin >> t; while (t--) { int a, b, n; cin >> a >> b >> n; int ans = b, cnt = 0; for (int i = 0; i < n; i++) { int x;..

[코드포스 / Codeforces] Round #900 (Div. 3)

Codeforces Round #900 (Div. 3) 문제 세트는 여기서 확인할 수 있다. 문제 A. How Much Does Daytona Cost? (AC / 4 min) 더보기 n 크기의 배열의 서브세그먼트에서 k가 가장 빈도가 높은 수가 되도록 할 수 있는지 여부를 출력하는 문제. 서브세그먼트는 배열의 원소 하나도 가능하므로 배열에 k가 등장하면 YES 아니면 NO를 출력한다. #include using namespace std; int main() { cin.tie(0)->sync_with_stdio(0); int t; cin >> t; while (t--) { int n, k; cin >> n >> k; int x; string ans = "NO"; for (int i = 0; i < n; ..

[코드포스 / Codeforces] Round #899 (Div. 2)

Codeforces Round #899 (Div. 2) 문제 세트는 여기서 확인할 수 있다. 문제 A. Increasing Sequence (AC / 6 min) 더보기 배열 a를 입력받고 조건을 만족하는 b의 n번째 원소의 최솟값을 출력하는 문제. b는 반드시 오름차순이어야 하고 b의 n번째 원소가 최소가 되기 위해선 a의 1번째 원소는 1부터 가능한지 검사한다. a와 b의 i번째 원소가 같으면 안되므로 x = 1이라는 변수를 만들고 a의 각 원소에 대해 같으면 +2, 아니면 +1 한다. 기본적으로 오름차순이어야 하니까 +1인데, 만약 원소가 a와 같으면 1 더 증가시키면 된다. x는 b의 n번째 원소 + 1 이므로 x-1 출력. #include using namespace std; int main()..

[코드포스 / Codeforces] Educational Round #155 (Div. 2)

Codeforces Educational Round #155 (Div. 2) 문제 세트는 여기서 확인할 수 있다. 문제 A. Rigged! (AC+2 / 27 min) 더보기 힘은 들 수 있는 바벨 무게의 최대값, 지구력은 바벨을 들 수 있을 때 가능한 횟수다. 이 문제에선 첫 번째 선수가 우승하기 위한 바벨의 최소 무게를 구하는 문제다. 처음 입력되는 선수의 힘 s와 지구력 e를 기준으로 e가 더 높은 선수만 s, e를 pair로 벡터에 추가한 다음 힘을 기준으로 정렬한다. 만약 그런 선수가 없다면 첫 선수의 힘을 출력한다. 자신보다 힘이 강한 선수가 있다면 우승할 수 없으므로 -1을 출력한다. 자신보다 힘이 강한 선수는 없지만, 횟수를 같거나 많이 하는 선수가 있다면 그 선수가 들 수 있는 무게 + ..

[코드포스 / Codeforces] Round #895 (Div. 3)

Codeforces Round #895 (Div. 3) 문제 세트는 여기서 확인할 수 있다. 문제 A. Two Vessels (AC / 7 min) 더보기 a, b 중 큰 수와 작은 수를 정해놓고 작은 수와 큰 수에 각각 c를 더하고 빼면서 몇 번 만에 같아지는지 구하는 문제다. 단순 시뮬레이션. #include using namespace std; #define ll long long #define pii pair int main() { ios::sync_with_stdio(0); cin.tie(0); int t; cin >> t; while (t--) { int a, b, c; cin >> a >> b >> c; int small = a > b ? b : a; int big = a > b ? a : ..

[코드포스 / Codeforces] Round #894 (Div. 3)

Codeforces Round #894 (Div. 3) 문제 세트는 여기서 확인할 수 있다. 문제 A. Gift Carpet (AC / 5 min) 더보기 문자 행렬을 입력받고 좌측 열부터 순서대로 탐색한다. 각각 다른 열에서 v, i, k, a를 순서대로 하나씩 선택할 수 있다면 YES 아니면 NO. #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int t; cin >> t; char a[] = {'v', 'i', 'k', 'a'}; while (t--) { int n, m; cin >> n >> m; vector v(n); int cnt = 0; for (int i = 0; i ..

[코드포스 / Codeforces] Round #886 (Div. 4)

Codeforces Round #886 (Div. 4) 문제 세트는 여기서 확인할 수 있다. 문제 A. To My Critics (AC / 2 min) 더보기 a, b, c 중 두개의 합이 10 이상이면 yes 아니면 no를 출력하는 문제. #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int t; cin >> t; while (t--) { int a, b, c; cin >> a >> b >> c; if (a + b >= 10 || a + c >= 10 || b + c >= 10) cout t; while (t--) { int n, t = 0, idx = -1; cin >> n; for (int i = 0; ..

[코드포스 / Codeforces] Round #897 (Div. 2)

Round #897 (Div. 2) 대회 https://codeforces.com/contest/1867 Dashboard - Codeforces Round 897 (Div. 2) - Codeforces codeforces.com 푼 문제 A. green_gold_dog, array and permutation 입력받은 배열을 오름차순으로 정렬한 다음 원래 index의 위치에 1~N까지 위치하도록 한다. pair를 사용해 index를 함께 묶어서 정렬했다. 어렵지 않아서 코드만 봐도 이해가 될 듯. #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int t; cin >> t; while (t--) { int n..

[코드포스 / Codeforces] Round #874 (Div. 3)

Round #874 (Div. 3) 대회 https://codeforces.com/contest/1833 Dashboard - Codeforces Round 874 (Div. 3) - Codeforces codeforces.com 푼 문제 A. Musical Puzzle 입력받은 문자열에서 연속된 두 글자의 종류의 수를 출력하면 된다. 중복되는 부분 문자열 처리를 위해 map 자료구조를 사용했다. #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int t; cin >> t; while (t--) { string s; int n; cin >> n >> s; map M; for (int i = 0; i < n - ..

[코드포스 / Codeforces] Round #863 (Div. 3)

Round #863 (Div. 3) 대회 https://codeforces.com/contest/1811 Dashboard - Codeforces Round 863 (Div. 3) - Codeforces codeforces.com 푼 문제 A. Insert Digit 정수 n과 d를 입력받아 d를 n의 어딘가에 한 번 적절히 넣어 만들 수 있는 가장 큰 수를 출력하는 문제. 정수 n을 문자열로 받아 앞에서부터 탐색하며 각 자릿수를 x라 하면 d > x인 경우 d를 출력한 다음 x를 출력한다. 이외의 경우(d ≤ x)에는 x만 출력한다. flag를 만들어 d > x인 경우에도 이미 d를 한 번 출력했다면 x만 출력한다. #include using namespace std; int main() { ios::..

반응형