[오늘의 코테연습장] - 2164 카드 2

문제

풀이 과정

문제에서는 카드가 스택처럼 세로로 쌓여있는 구조로 설명했지만, 이를 가로로 눕혀 배열로 생각하였다.
카드를 배열로 입력받아, 배열의 첫 원소(1)을 front로 지정, 배열의 마지막 원소(N)을 end로 지정
배열의 제일 첫번쨰 원소(제일위에있는 카드)를 삭제하는 것이 아니라, 배열의 첫번쨰 원소의 다음원소(두번쨰 원소)를 가리키게 front를 증가시킴
그다음 제일 위에있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다고 문제에 나와있다.
즉 증가시킨 front는 배열의 가장 마지막원소의 다음 원소 위치로 이동하게 된다.
이후 front와 end가 가리키는 위치를 증가시켜준다.

코드

package backjoon;

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

public class card2_2164 {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int front = 1;
        int end = N;
        int[] queue = new int[2 * N];
        for (int i = 0; i <= N; i++) {
            queue[i] = i;
        }
        for(int j=N;j>1;j--) {
            front++;
            queue[end + 1] = queue[front];
            end++;
            front++;
        }
        System.out.println(queue[front]);


    }


}

좋은 웹페이지 즐겨찾기