[오늘의 코테연습장] - 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]);
}
}
Author And Source
이 문제에 관하여([오늘의 코테연습장] - 2164 카드 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@minina/오늘의-코테연습장-2164-카드-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)