컴굥일지

[Programmers/프로그래머스][C++] 유전법칙 (PCCP 모의고사 1회 3번) 본문

알고리즘/코테 문제

[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;
}
반응형
Comments