알고리즘
- 파라미터로 주어진 세대부터 2세대에 도달할 때까지 현재 인덱스가 1~4 중 어딘지 구해서 스택에 넣는다.
- 스택의 맨 위에 있는 인덱스는 2세대의 인덱스다. 1이면 RR, 2이면 Rr, 3이면 Rr, 4이면 rr이다. 1과 4인 경우는 자식 모드 부모와 동일하지만 2, 3인 경우에는 자식이 3종류가 나올 수 있으므로 다음 세대를 본다.
- 2에서 결정을 못하고 파라미터로 주어진 세대까지 내려오게되면 주어진 세대의 1~4 값을 가지는 인덱스가 정답이다.
코드
function solution(queries) {
const answer = [];
const generation2nd = ['', 'RR', 'Rr', 'Rr', 'rr'];
for (let query of queries) {
if (query[0] === 1) {
answer.push('Rr');
continue;
}
let generation = query[0] - 1;
let branch = query[1];
let lastPea = (query[1] + 3) % 4 + 1;
const stack = [];
while (generation > 1) {
branch = Math.ceil(branch / 4);
stack.push((branch + 3) % 4 + 1);
generation--;
}
answer.push(generation2nd[lastPea]);
while (stack.length) {
const nthPea = stack.pop()
if (nthPea === 1 || nthPea === 4) {
answer.pop();
answer.push(generation2nd[nthPea]);
break;
}
}
}
return answer;
}
주저리
시험칠 때 테케 4개가 틀렸는데 시험 시간 1시간 동안 붙잡고 있었는데도 못 풀었다.
근데 시험시간에 했던 풀이는 틀린 게 맞다^^ 테케 6개 맞은 것도 기적이라고 할 수 있다........
다르게 풀어야 한다는 것을 깨닫고 푸는데 아무리 생각해도 이게 맞는데 테케 하나를 통과를 못하길래 한 네다섯 시간 머리 싸맸는데 1세대 예외처리에 continue를 적어야 하는데 break를 적은 것이었다. 이렇게 허무할 수가
'코딩테스트' 카테고리의 다른 글
[JS] 전력망을 둘로 나누기 (0) | 2024.04.09 |
---|---|
[JS] 124 나라의 숫자 (0) | 2024.04.05 |
[JS] 연속된 부분 수열의 합 (0) | 2024.04.02 |
[JS] 큰 수 만들기 (0) | 2024.03.27 |
[JS] 삼각 달팽이 (0) | 2024.03.21 |