사용 알고리즘: 재귀?
사용 언어: java
import java.util.*;
class Solution {
String[] answer;
public String[] solution(int[][] queries) {
answer= new String[queries.length];
for(int i=0; i<queries.length; i++) {
if(queries[i][0]==1) {
answer[i] = "Rr";
continue;
}
List<int[]> tree = new ArrayList<>();
dfs(queries[i][0], queries[i][1], tree, i);
}
return answer;
}
public String toDown(List<int[]> tree) {
//for(int[] t : tree)
//System.out.println(Arrays.toString(t));
int[] t = tree.remove(tree.size()-1);
String parent = "";
if(t[1]==1) parent = "RR";
else if(t[1]==4) parent = "rr";
else parent = "Rr";
for(int i=tree.size()-1; i>=0; i--) {
if(parent.equals("RR")) return "RR";
if(parent.equals("rr")) return "rr";
t = tree.remove(tree.size()-1);
if(t[1]==1) parent = "RR";
else if(t[1]==4) parent = "rr";
else parent = "Rr";
}
return parent;
}
public void dfs(int generation, int bang, List<int[]> tree, int idx) {
if(generation == 1) {
answer[idx] = toDown(tree);
return;
}
//
int pbang = (bang-1) / 4 + 1;
int bbang = 1;
if(pbang * 4 == bang) bbang = 4;
else if(pbang * 4 - 1 == bang) bbang = 3;
else if(pbang * 4 - 2 == bang) bbang = 2;
tree.add(new int[] {generation, bbang});
dfs(generation-1, pbang, tree, idx);
}
}
흠... 뭔가 좀 더 깔끔한 방법 없을까
'알고리즘 > 프로그래머스' 카테고리의 다른 글
소수 찾기 (0) | 2024.12.11 |
---|---|
[PCCP 모의고사 #1] 4번 - 운영체제 (1) | 2024.12.09 |
모음사전 (0) | 2024.12.09 |
쿼드압축 후 개수 세기 (1) | 2024.12.09 |
[PCCP 모의고사 #1] 2번 - 체육대회 (0) | 2024.12.02 |