Educational Codeforces Round 123 (Rated for Div. 2) 1670 -> 1589
https://codeforces.com/contest/1644
Dashboard - Educational Codeforces Round 123 (Rated for Div. 2) - Codeforces
codeforces.com
!!!! 모든 답은 제 풀이일 뿐 정해가 아닐 수 있습니다 !!!!
A. Doors and Keys
https://codeforces.com/contest/1644/problem/A
Problem - A - Codeforces
codeforces.com
문제
r,g,b,R,G,B로 이루어진 스트링이 주어진다. R,G,B는 문이고 r,g,b는 키이다. 왼쪽부터 순서대로 이동하면서 각 문자열에 맞는 키를 먼저 줍고 모든 문을 열 수 있으면 YES 아니라면 NO를 출력하는 문제
풀이
각 문자열마다 체크변수를 두어서 계산한다.
코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int T;
cin >> T;
while (T--) {
string s;
cin >> s;
int cntr = 0, cntg = 0, cntb = 0;
bool flag = true;
for (int i = 0; i < s.size(); i++) {
if (s[i] == 'r')cntr++;
if (s[i] == 'g')cntg++;
if (s[i] == 'b')cntb++;
if (s[i] == 'R') {
if (cntr != 1) {
flag = false;
break;
}
}
if (s[i] == 'G') {
if (cntg != 1) {
flag = false;
}
}
if (s[i] == 'B') {
if (cntb != 1) {
flag = false;
break;
}
}
}
if (flag)cout << "YES\n";
else cout << "NO\n";
}
}
B. Anti-Fibonacci Permutation
https://codeforces.com/contest/1644/problem/B
Problem - B - Codeforces
codeforces.com
문제
n이 주어진다. 길이가 n인 permutation에서 피보나치 수열을 이루지 않는 n개의 서로 다른 permutation을 출력하는 문제
풀이
n제한이 50이하이므로 next_permutation 함수나 prev_permutation 함수를 사용하여 완전탐색으로 푼다.
코드
#include <bits/stdc++.h>
using namespace std;
int a[51];
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int T;
cin >> T;
while (T--) {
int n;
cin >> n;
for (int i = 0; i < n; i++)a[i] = n - i;
int cnt = 0;
do {
bool flag = true;
for (int i = 2; i < n; i++) {
if (a[i] == (a[i - 1] + a[i - 2])) {
flag = false;
break;
}
}
if (flag) {
for (int i = 0; i < n; i++)cout << a[i] << ' ';
cout << '\n';
cnt++;
if (cnt == n)break;
}
} while (prev_permutation(a, a + n));
}
}
자세한 설명에 중점을 두기보다는 대회 기록에 중점을 둔 글입니다 !
틀린 부분은 감사히 지적받겠습니다.