https://school.programmers.co.kr/learn/courses/20847/lessons/255902
ํ์ด๊ณผ์
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;
}
}
'๐์ฝ๋ฉํ ์คํธ:CodingTest' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[PCCP ๋ชจ์๊ณ ์ฌ #2] 3๋ฒ - ์นดํ ํ์ฅ (1) | 2024.12.18 |
---|---|
[PCCP ๋ชจ์๊ณ ์ฌ #1] 4๋ฒ - ์ด์์ฒด์ (0) | 2024.12.12 |
๋ฉ๋์ฌ์ ์ ์ฌ๋ค (0) | 2024.12.04 |
2024 ์ผ์ฑSW์ญ๋ํ ์คํธ ํ๋ฐ๊ธฐ ์ค์ 1๋ฒ (0) | 2024.12.02 |
์์ด(n๊ณผm ๋ฌธ์ ) ์ต์ ํ ์ํค๊ธฐ && ์กฐํฉ (0) | 2024.10.29 |