[백준] - 2164 카드2 (Python/node.js)

밀루·2023년 8월 19일
0

BOJ

목록 보기
22/82

문제 링크

코드

import sys
from collections import deque
n=int(sys.stdin.readline().strip())
d1=deque(list(i for i in range(1, n+1)))

while len(d1)>1:
    d1.popleft()
    d1.append(d1.popleft())

print(d1[0])

python의 덱을 사용해 풀었다.

그런데 자바스크립트의 경우, 같은 방식으로 shift()pop()을 사용하면 시간초과가 난다. 그래서 아래 코드와 같이 start 위치(맨 위)를 기억하여 n*2 동안 반복문을 실행해줬다.

// 카드2

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
const [n] = fs.readFileSync(filePath).toString().trim().split("\n").map(Number);

let l1 = [];
for (let i = 1; i <= n; i++) {
  l1.push(i);
}

for (let start = 0; start < n * 2; start = start + 2) {
  l1.push(l1[start + 1]);
}

console.log(l1[n * 2 - 2]);
profile
이밀루의 도전

0개의 댓글