solution
1. 덱(Deque) 사용 ∵ 양 옆에서 삭제. 삽입
java
// 2164, 카드2
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;
public class BOJ_2164 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
Deque<Integer> d = new ArrayDeque<>();
for (int i=1;i<=N;i++) {
d.add(i);
}
while (d.size()>1) {
d.pollFirst();
d.add(d.pollFirst());
}
System.out.println(d.peek());
}
}
python
# 2164, 카드2
import sys
from collections import deque
N = int(sys.stdin.readline())
d = deque()
for i in range(1, N + 1):
d.append(i)
while len(d) > 1:
d.popleft()
d.append(d.popleft())
print(d[0])
문제 출처 www.acmicpc.net/problem/2164
'알고리즘 > 구현' 카테고리의 다른 글
자바 | 파이썬 | 백준 | 10250 | ACM 호텔 (0) | 2021.01.22 |
---|---|
자바 | 백준 | 10807 | 개수 세기 (0) | 2021.01.21 |
자바 | 백준 | 1978 | 소수 찾기 (0) | 2021.01.21 |
자바 | 백준 | 1259 | 팰린드롬수 (0) | 2021.01.20 |
파이썬 | 백준 | 3985 | 롤 케이크 | array.index (0) | 2020.12.30 |