๐Ÿ“‚์ฝ”๋”ฉํ…Œ์ŠคํŠธ:CodingTest

PCCP ๋ชจ์˜๊ณ ์‚ฌ1ํšŒ 3๋ฒˆ

mc.thd 2024. 12. 11. 16:26

https://school.programmers.co.kr/learn/courses/20847/lessons/255902

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 

ํ’€์ด๊ณผ์ •

 

1. ๋ถ€๋ชจ์˜ ์œ ์ „ํ˜•์งˆ ์ฐพ๊ธฐ

(n,p)์˜ ๋ถ€๋ชจ๋Š” (n-1, (p-1)/4 + 1) ์ž…๋‹ˆ๋‹ค.

 

2. ๋ถ€๋ชจ๊ฐ€ 'RR' ์ด๋ฉด ์ž์‹๋„ 'RR', ๋ถ€๋ชจ๊ฐ€ 'rr' ์ด๋ฉด ์ž์‹๋„ 'rr' ์ž…๋‹ˆ๋‹ค.

๋ถ€๋ชจ๊ฐ€ 'Rr'์ด๋ผ๋ฉด ์ž์‹์€ 4๊ฐ€์ง€ ํ˜•์งˆ {"RR","Rr","Rr","rr"} ์—์„œ ์ž์‹ ์˜ ์œ„์น˜์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค.

์ž์‹ ์˜ ์œ„์น˜๋Š” (p-1)%4 ๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    String[] tmp = {"RR","Rr","Rr","rr"};
    
    String solve(int n, int p){
        if(n==1) return "Rr";
        
        String parent = solve(n-1,(p-1)/4+1);
        
        if(!parent.equals("Rr")) return parent;
        
        return tmp[(p-1)%4];
        
    }

 

 

์•Œ๊ฒŒ๋œ ์ 

  • ๋ฉ”๋ชจ๋ฆฌ์ œ์ด์…˜ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ํฐ ๊ฒฝ์šฐ dp๋ฅผ ๋ชป ์“ฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • ํ•ด๋‹น ๋ฌธ์ œ์—์„œ ๋ฉ”๋ชจ๋ฆฌ์ œ์ด์…˜ ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค๋ฉด ํฌ๊ธฐ๊ฐ€ ( 16 x 1,000,00,000 ) ์ธ ๋ฐฐ์—ด์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 

์ฝ”๋“œ

import java.util.*;

// n์„ธ๋Œ€ p๋ฒˆ์งธ ํ˜•์งˆ
class Solution {
    String[] tmp = {"RR","Rr","Rr","rr"};
    
    String solve(int n, int p){
        if(n==1) return "Rr";
        
        String parent = solve(n-1,(p-1)/4+1);
        
        if(!parent.equals("Rr")) return parent;
        
        return tmp[(p-1)%4];
        
    }
    
    public String[] solution(int[][] queries) {
        String[] answer = new String[queries.length];
        
        for(int i=0;i<queries.length;i++){
            int n,p;
            n = queries[i][0];
            p = queries[i][1];
            answer[i] = solve(n,p);
        }
        
        return answer;
    }
}