-
백준 2164번 카드2 (Python, Java)Baekjoon 2020. 1. 20. 01:13728x90반응형
https://www.acmicpc.net/problem/2164
2164번: 카드2
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리
www.acmicpc.net
풀이 : Deque를 쓰지 않고 그냥 풀면 시간초과가 발생한다. 카드1 문제는 아무렇게나 풀어도 맞았는데 이거는 시간초과가 발생하기 때문에 Deque를 써야한다.
1. 카드2 with Python
12345678910111213from collections import dequecards = deque([i for i in range(int(input()), 0, -1)])while len(cards) > 1:cards.pop()if len(cards) == 1:breakcards.appendleft(cards.pop())print(cards[0])deque는 큐와 스택의 기능을 다 이용할 수 있는 자료구조이다. 파이썬 deque에 관한 것이다.
출처 : https://dongdongfather.tistory.com/72 출처 : https://dongdongfather.tistory.com/72 출처 : https://dongdongfather.tistory.com/72 출처 : https://dongdongfather.tistory.com/72 2. 카드2 with Java
12345678910111213141516171819202122232425262728import java.util.ArrayDeque;import java.util.Deque;import java.util.Scanner;public class Main_2164 {public static void main(String[] args) {Scanner input = new Scanner(System.in);Deque<Integer> queue = new ArrayDeque<>();int n = input.nextInt();for (int i = 0; i < n; ++i) {queue.addLast(i+1);}while (queue.size() > 1) {queue.pollFirst();if (queue.size() == 1) break;queue.offerLast(queue.pollFirst());}System.out.println(queue.pollFirst());}}반응형'Baekjoon' 카테고리의 다른 글
백준 2110번 공유기 설치 (Java) (0) 2021.01.27 백준 2702번 초6 수학 (with Java) (0) 2020.02.17 백준 1181번 단어 정렬(Java) (0) 2020.01.18 백준 뒤집힌 덧셈 1357번(Python, Java) (0) 2020.01.17 백준 베스트셀러 1302번(Python, Java) (0) 2020.01.15