2023.01.03 : 2164 카드2

‍박예서·2023년 1월 3일

코딩테스트

목록 보기
13/27

1. 문제

2. 아이디어

  • 데크 문제다.

3. 수도 코드

while(deque의 크기가 1이 아닐때까지){
	deque 앞에서 하나 뽑고
    if 반복 횟수가 홀수이면 버리고
    if 반복 횟수가 짝수면 뒤에 추가
}

4. 코드

import java.io.*;
import java.util.*;

class Main {  
  public static void main(String args[]) throws Exception{ 
    Scanner scn = new Scanner(System.in);
    int N = scn.nextInt();

    Deque<Integer> deque = new ArrayDeque<>();
    for(int i =0 ; i< N; i++){
      deque.add(i+1);
    }

    int count = 1;
    int tmp;
    while(deque.size() != 1){
      tmp = deque.removeFirst();
      if(count % 2 == 0) deque.addLast(tmp);
      count = count + 1;
    }

    tmp = deque.removeFirst();
    System.out.println(tmp);
    
  } 
}

5. 느낀점 및 배운점

  • Deque 선언
    • Deque<타입명> 자료명 = new ArrayDeque<>();
  • Deque 추가
    • 앞에서 넣기 : deque.addFirst();
    • 뒤에서 넣기 : deque.addLast();
  • Deque 빼기
    • 앞에서 빼기 : deque.removeFirst();
    • 뒤에서 빼기 : deque.removeLast();
  • Deque 값 확인
    • 맨 앞 값 확인 : deque.peekFirst();
    • 맨 뒤 값 확인 : deque.peekLast();

0개의 댓글