알고리즘/코테 문제
[Programmers/프로그래머스][C++] 유전법칙 (PCCP 모의고사 1회 3번)
gyong
2023. 8. 19. 18:04
반응형
문제
https://school.programmers.co.kr/learn/courses/15008/lessons/121685?language=cpp
문제 내용
완두콩의 세대와, 해당 세대에서 몇 번째 개체인지를 입력받아, 완두콩의 형질을 출력하면 되는 문제이다.
문제 풀이
가계도를 자세히 살펴보면, 재귀적인 부분을 찾을 수 있다.
완두콩이 자신의 형질을 알기 위해서는 부모의 형질을 알아야 하고, 부모의 형질은 그 윗세대의 형질을 알아야 한다.
코드
#include <string>
#include <vector>
#include <iostream>
using namespace std;
string calcBean(int level, int num){ // 몇레벨의 몇번째 개체
if(level == 1){
return "Rr";
}else if(level==2){
if(num==1) return "RR";
else if(num==4) return "rr";
else return "Rr";
}
int next_num= (num%4) ? num/4+1 : num/4;
string parent = calcBean(level-1, next_num);
if(parent == "Rr"){
int next= (num%4) ? num%4 : 4;
return calcBean(2, next);
}else return parent; //부모가 RR이나 rr이면 자식도 똑같은 형질임
}
vector<string> solution(vector<vector<int>> queries) {
vector<string> answer;
for(int i=0;i<queries.size();i++){
string result=calcBean(queries[i][0], queries[i][1]);
answer.push_back(result);
}
return answer;
}
반응형