Problem Solving/BOJ

[백준 / BOJ] C++ 27939 가지 교배

nageune 2023. 4. 10. 10:25
728x90
반응형

27939번: 가지 교배

 

문제

https://www.acmicpc.net/problem/27939

 

27939번: 가지 교배

키위별의 유전학에 따르면 가지의 교배는 두 가지 서로 다른 방식이 가능하다. 교배란 서로 다른 두 품종으로부터 이전에 존재한 적 없는 하나의 품종을 만들어내는 것이다. P-우선 교배: 흰색과

www.acmicpc.net

 

 

풀이

조수들은 P-우선 교배를 하기 때문에 보라색인 가지가 1개라도 섞여있다면 보라색 가지가 배출되고, 키위는 W-우선 교배를 하기 때문에 흰색인 가지가 하나라도 있다면 흰색 가지가 배출된다.

 

따라서 각 번호의 가지가 P인지 W인지 저장하는 배열을 만들어두고 각 조수가 가진 품종 중에 P가 몇 개인지 센다. P-우선 교배에 따라 P가 0인 경우 W를 1 증가시키고 모든 조수의 가지 교배가 끝나고 나면 배출되는 흰색 가지의 양을 알 수 있다. 흰색 가지가 하나라도 있다면 W-우선 교배에 따라 흰색 가지가 배출되므로 W를, 흰색 가지가 하나도 없다면 P를 출력한다.

 

 

코드

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

int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, w = 0;
  cin >> n;
  vector<char> v(n);
  for (int i = 0; i < n; i++)
    cin >> v[i];
  int m, k;
  cin >> m >> k;
  for (int i = 0; i < m; i++) {
    int p = 0;
    for (int j = 0; j < k; j++) {
      int x;
      cin >> x;
      if (v[x - 1] == 'P')
        p++;
    }
    if (p == 0)
      w++;
  }
  if (w != 0)
    cout << 'W';
  else
    cout << 'P';
  return 0;
}

 

728x90
반응형