Recent Posts
Recent Comments
Link
- Today
- Yesterday
- Total
메이쁘
(JAVA) 백준 2161번 : 카드1 본문
https://www.acmicpc.net/problem/2161
2161번: 카드1
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리
www.acmicpc.net
쉬운 시뮬레이션 문제이다.
어렵게 생각안하고
Queue를 사용해서 해결했다.
매커니즘
1. n이 주어진 경우, 1 ~ n 까지 숫자 하나씩 Queue에 담는다.
2. 가장 맨 위의 카드 한 장을 버린다.(Queue.poll())
3. 버린 카드를 StringBuilder에 저장한다.
4. 가장 맨 위의 카드를 맨 뒤로 이동시킨다.
=> Queue.add(Queue.poll())
5. 버릴 카드가 없거나(거의 없음) 맨 뒤로 이동시킬 카드가 없을 경우(거의 이 조건에서 끝남) 종료한다.
감사합니다.
소스코드
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.BufferedReader; | |
import java.io.IOException; | |
import java.io.InputStreamReader; | |
import java.util.LinkedList; | |
import java.util.Queue; | |
// 카드1 | |
// 시뮬레이션 | |
public class p2161 { | |
public static void main(String args[]) throws NumberFormatException, IOException { | |
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); | |
int n = Integer.valueOf(br.readLine()); | |
Queue<Integer> q = new LinkedList<Integer>(); | |
for(int i = 1; i <= n; i++) { | |
q.offer(i); | |
} | |
StringBuilder sb = new StringBuilder(); | |
while(!q.isEmpty()) { | |
sb.append(q.poll()).append(" "); | |
if(q.isEmpty()) { | |
break; | |
} | |
q.offer(q.poll()); | |
} | |
System.out.println(sb.toString()); | |
} | |
} |
'Algorithm > Baekjoon' 카테고리의 다른 글
(JAVA) 백준 1062번 : 가르침 (0) | 2020.04.26 |
---|---|
(JAVA) 백준 13458번 : 시험 감독 (0) | 2020.04.23 |
(JAVA) 백준 5543번 : 상근날드 (0) | 2020.04.23 |
(JAVA) 백준 9324번 : 진짜 메세지 (0) | 2020.04.22 |
(JAVA) 백준 9517번 : 아이 러브 크로아티아 (0) | 2020.04.22 |