Problem Solving/Codeforces

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

nageune 2023. 10. 3. 12:18
728x90
반응형

Codeforces Round #894 (Div. 3)

문제 세트는 여기서 확인할 수 있다.


문제

A. Gift Carpet (AC / 5 min)

더보기

문자 행렬을 입력받고 좌측 열부터 순서대로 탐색한다.

각각 다른 열에서 v, i, k, a를 순서대로 하나씩 선택할 수 있다면 YES 아니면 NO.

#include <bits/stdc++.h>
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<string> v(n);
    int cnt = 0;
    for (int i = 0; i < n; i++)
      cin >> v[i];
    for (int c = 0; c < m; c++) {
      for (int r = 0; r < n; r++) {
        if (v[r][c] == a[cnt]) {
          cnt++;
          break;
        }
      }
    }
    if (cnt == 4)
      cout << "YES\n";
    else
      cout << "NO\n";
  }
  return 0;
}

 

B.Sequence Game (AC / 13 min)

더보기

a -> b가 될 때, a[i-1] ≤ a[i] 일 때만 a[i]를 추가한다. 즉, b -> a가 될 때는 b[i] < b[i-1]일 때 b[i]를 두번, 이외에는 한 번 추가하면 된다. 두번 추가하는 이유는 한 번만 추가하면 비교했을 때 a -> b로 추가가 되지 않기 때문이다.

#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int t;
  cin >> t;
  while (t--) {
    int n;
    cin >> n;
    vector<int> b(n), a;
    for (int i = 0; i < n; i++)
      cin >> b[i];
    a.push_back(b[0]);
    for (int i = 1; i < n; i++) {
      if (b[i] < b[i - 1]) {
        a.push_back(b[i]);
        a.push_back(b[i]);
      } else {
        a.push_back(b[i]);
      }
    }
    cout << a.size() << '\n';
    for (int i : a)
      cout << i << ' ';
    cout << '\n';
  }
  return 0;
}

 

C.Flower City Fence (WA)

더보기

히스토그램이 있을 때, y = x 그래프에 대칭했을 때 원래와 같은지 여부를 출력하는 문제.

하나도 안어려워 보이는데... 머리를 한참 싸매고 10번이나 제출했지만 TLE MLE MLE RE MLE WA WA TLE TLE WA


총평

문제가 어려운 편은 아니었는데 구현 능력이 안돼서 아쉬웠던 대회. 문제의 솔루션을 찾는 능력도 별로였던듯. 처음으로 div 숫자보다 AC 숫자가 작았던 대회. 마지막 배치인데 결국 그레이.. 22점이 부족했다.

728x90
반응형