백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 2346 , 풍선 터뜨리기
문제 출처
https://www.acmicpc.net/problem/2346
2346번: 풍선 터뜨리기
1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선
www.acmicpc.net
풀이
파이썬으로는 rotate 함수에 인수 넣어서 그냥 돌리면 되는데
자바스크립트에는 rotate 함수가 없어서 직접 구현해보았다.
참고로 이 문제는 자바스크립트로 제출 했을때 메모리초과가 발생하여서 파이썬으로 제출하여 풀었다.
질문 게시판에서도 자바스크립트로는 메모리 초과때문에 통과 못했다는데 혹시 통과하신 분들 계신지 궁금
이 문제로 자바스크립트 rotate 구현에 연습이 많이 되었다.
정답
메모리 초과 발생!!!
const input = require("fs").readFileSync("/dev/stdin").toString().split("\n");
const RotateLeft = (nums, a) => {
if (nums.length < a) a %= nums.length;
let spliced = nums.splice(nums.length - a, nums.length);
nums = [...spliced, ...nums];
return nums;
};
const RotateRight = (nums, a) => {
if (nums.length < a) a %= nums.length;
let spliced = nums.splice(0, a);
nums = [...nums, ...spliced];
return nums;
};
const T = Number(input[0]);
const arr = input[1].split(" ").map(Number);
dq = [];
for (const [i, e] of arr.entries()) dq.push([i, e]);
let result = [];
while (dq.length !== 0) {
console.log(dq);
let [idx, next] = dq.shift();
result.push(idx + 1);
if (next > 0) {
dq = RotateRight(dq, next - 1);
} else {
dq = RotateLeft(dq, -next);
}
}
console.log(result.join(" "));
반응형
'알고리즘 공부 > 백준 - 자바스크립트' 카테고리의 다른 글
백준/ Silver 2 문제 , 백준 Node.js 자바스크립트 11048 , 이동하기 [dp] (0) | 2022.09.20 |
---|---|
백준/ Gold 5 문제 , 백준 Node.js 자바스크립트 12865 , 평범한 배낭 (0) | 2022.09.19 |
백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 1904 , 01타일 [dp] (0) | 2022.09.15 |
백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 15624 , 피보나치 수 7 (0) | 2022.09.13 |
프로그래머스 / Level2 , 연습문제 , 최솟값 만들기 자바스크립트 , JS (0) | 2022.09.12 |