개발일기

[PCCP 모의고사 #1] 3번 - 유전법칙 (자바) 본문

Algorithm/알고리즘

[PCCP 모의고사 #1] 3번 - 유전법칙 (자바)

한둥둥 2024. 4. 3. 21:20

https://school.programmers.co.kr/learn/courses/15008/lessons/121685

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

package src.Week6.ProgrammersBean;

public class Bean {
    static String[] popList = {"RR", "Rr", "Rr", "rr"};
    public static void main(String[] args) {
        int [][] problems = {{3,5},{3,8}};

        for(String str : solution(problems)){
            System.out.println("str = " + str);
        }
    }
    static String[] solution(int[][] queries){
        String[] answer = new String[queries.length];

        for(int i=0;i< queries.length; i++){
            int gen = queries[i][0];
            int num = queries[i][1];

            answer[i] = recursive(gen, num);

        }

        return answer;
    }

    static String recursive(int gen, int num){
        String target = popList[1];
        switch(gen){
            case 1: return target;
            case 2:
                target = popList[num-1];
                return target;
            default:

                gen = gen -1;
                int parentNum = (int)Math.ceil((double)num / (double)4);
                int parentsChildNum = num%4 -1;
                target = recursive(gen, parentNum);

                if(target.equals(popList[0]) || target.equals(popList[3])){
                    return target;
                }

                target = popList[parentsChildNum%4==-1? 3 : parentsChildNum];
                return target;
        }


    }
}

 

해당 문제는 dp로 해당 부분만 판단하여 푸는 문제이다. 

 

해당 부분은 일부부만 판단하여 진행하면 나머지 세대는 전부다 동일한 패턴으로 해결된다. 

RR , rr 인 경우는 비교할 필요가 없으며 2 3번째만 판단하면 된다. 이때, 4개씩 떨어지므로, 나머지 4를 구하면 완벽하다. 

해당 문제는 문제를 이해하는 시간이 오래걸렸을 뿐 막상 이해하니깐 쉽게 풀었다.