728x90
난이도 : 실버4
풀이일 : 07053
https://www.acmicpc.net/problem/2164
2164번: 카드2
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐
풀이 코드
import java.util.LinkedList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
scan.close();
// queue 요소 추가
LinkedList<Integer> queue = new LinkedList<>();
for (int i = 1; i <= N; i++) {
queue.addLast(i);
}
// queue 길이가 1이 될 때 까지 문제 조건 반복
while (queue.size() > 1) {
queue.pollFirst();
queue.addLast(queue.pollFirst());
}
System.out.println(queue.pollFirst());
}
}
- 1~N 까지의 숫자를 링크드리스트로 만든 큐에 추가
- 큐의 요소가 한 개 남을 때 까지 문제의 조건 반복
- LinkedList.addLast(temp) : 링크드리스틔 맨 뒤에 temp 요소 추가
- LinkedList.pollFirst() : 링크드리스트의 맨 앞 요소 제거 및 리턴
느낀점
어제에 이어 링크드리스트 문제를 풀어보았다. 익숙하게 느껴질 때까지 조금 반복하고 넘어가야지.
파이썬에서 큐 문제들을 좋아했어서 괜찮게 느껴지는 것 같기도 한데, 시간 날 때 자료구조들도 하나씩 정리해봐야겠다.
네 달 전에 파이썬으로 풀고 시간초과로 틀렸었던데 지금 한 번에 풀어서 좀 기분 좋은 기록
'알고리즘 > 🥈 실버' 카테고리의 다른 글
백준 1021 회전하는 큐 자바 풀이 (0) | 2023.07.08 |
---|---|
백준 2161 카드1 자바 풀이 (0) | 2023.07.07 |
백준 1158 요세푸스 문제 자바 풀이 (0) | 2023.07.03 |
백준 11047 동전 0 파이썬 풀이 (0) | 2023.05.02 |
백준 1463 1로 만들기 파이썬 풀이 (0) | 2023.05.01 |