✔ 카드2
문제 분석하기
큐의 원리를 정확하게 알고 있는지 묻는 문제
큐의 선입선출 성질을 이용하여 문제에 접근
손으로 풀어보기
- poll을 수행하여 맨 앞의 카드를 버림
- add를 수행해 맨 앞에 있는 카드를 가장 아래로 옮김
- 큐의 크기가 1일 될 때까지 과정 1~2를 반복한 후 큐에 남은 원소를 출력
슈도코드 작성하기
N(카드의 개수) myQueue(카드 저장 자료구조)
for(카드의 개수만큼 반복)
{
큐에 카드 저장하기
}
while(카드가 1장 남을 때까지)
{
맨 위의 카드를 버림 : poll()
맨 위의 카드를 가장 아래의 카드 밑으로 이동 : poll() → add()
}
마지막으로 남은 카드 출력
코드 구현하기
/**
* 2164) 카드_2
*/
public class D013_2164 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// N(카드의 개수)
int N = sc.nextInt();
// myQueue(카드 저장 자료구조)
Queue<Integer> myQueue = new LinkedList<>();
for (int i = 1; i <= N; i++) {
// 큐에 카드 저장하기
myQueue.add(i);
}
// 카드가 1장 남을 때까지
while (myQueue.size() > 1) {
// 맨 위의 카드를 버림 : poll()
myQueue.poll();
// 맨 위의 카드를 가장 아래의 카드 밑으로 이동 : poll() → add()
myQueue.add(myQueue.poll());
}
// 마지막으로 남은 카드 출력
System.out.println(myQueue.poll());
}
}
'Coding Test > Java 알고리즘 실전' 카테고리의 다른 글
[1427] 소트인사이드 (0) | 2023.06.30 |
---|---|
[2750] 수 정렬하기 (0) | 2023.06.30 |
[1874] 스택 수열 (0) | 2023.06.29 |
[12891] DNA 비밀번호 (0) | 2023.06.28 |
[2018] 수들의 합 5 (0) | 2023.06.28 |