GitHub ID : soohyun-dev
윤수현의 개발 공간
GitHub ID : soohyun-dev
전체 방문자
오늘
어제
  • 분류 전체보기 (918)
    • 성장기록 (49)
      • 성장기록 (3)
      • 우아한테크코스 (16)
      • 프로젝트 (15)
      • TIL (14)
      • 테오의 스프린트 (1)
    • 프로그래밍언어 (88)
      • C언어 (14)
      • HTML\CSS (12)
      • JavaScript (7)
      • React (23)
      • Python (11)
      • JAVA (14)
      • TypeScript (6)
    • 알고리즘 공부 (736)
      • 코드업 - 파이썬 (108)
      • 백준 - 파이썬 (468)
      • 백준 - 자바스크립트 (125)
      • 프로그래머스 - 파이썬 (1)
      • 프로그래머스 - 자바스크립트 (34)
    • 책 리뷰 (9)
      • 프로그래밍 (3)
      • 독서 (6)
    • 전자기기 (1)
    • 일상, 일기 (18)
    • 기술 세미나 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 파이썬
  • 프로그래머스자바스크립트
  • 프로그래머스
  • 코테
  • 독해
  • javascript
  • PYTHON
  • 코딩테스트
  • 프론트엔드
  • 백준파이썬
  • 백준
  • 영어
  • 영어독해
  • 코딩
  • 코드업
  • 백준풀이
  • 자바스크립트
  • 프로그래밍언어
  • 코드업파이썬
  • 프로그래머스풀이

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GitHub ID : soohyun-dev

윤수현의 개발 공간

백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 2346 , 풍선 터뜨리기
알고리즘 공부/백준 - 자바스크립트

백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 2346 , 풍선 터뜨리기

2022. 9. 17. 15:37

백준/ 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
    '알고리즘 공부/백준 - 자바스크립트' 카테고리의 다른 글
    • 백준/ Silver 2 문제 , 백준 Node.js 자바스크립트 11048 , 이동하기 [dp]
    • 백준/ Gold 5 문제 , 백준 Node.js 자바스크립트 12865 , 평범한 배낭
    • 백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 1904 , 01타일 [dp]
    • 백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 15624 , 피보나치 수 7
    GitHub ID : soohyun-dev
    GitHub ID : soohyun-dev
    환영합니다!😊 이곳은 저의 개발에 관한 내용들을 정리하는 공간입니다. 알고리즘 풀이에도 관심이 많아요. 좋은 하루 되세요~! github : soohyun_dev

    티스토리툴바