728x90
난이도 : 실버3
풀이일 : 07075
https://www.acmicpc.net/problem/1021
1021번: 회전하는 큐
첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 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();
int M = scan.nextInt();
int shift = 0;
LinkedList<Integer> queue = new LinkedList<>();
// 1~N 큐 요소 추가
for (int i = 1; i <= N; i++) {
queue.add(i);
}
for (int j = 0; j < M; j++) {
// 제거할 숫자의 인덱스 저장
int target = queue.indexOf(scan.nextInt());
// 앞, 뒤 이동 방향 결정, 이동
if (target < queue.size() - target) {
for (int k = 0; k < target; k++) {
queue.addLast(queue.poll());
shift += 1;
}
}
else {
for (int k= 0; k < queue.size() - target; k++) {
queue.addFirst(queue.pollLast());
shift += 1;
}
}
queue.remove();
}
System.out.println(shift);
}
}
느낀점
며칠 동안 링크드 리스트를 활용해 비슷한 문제들을 해결하니까 많이 익숙해지고 있다.
그래도 아직 링크드 리스트 메서드들이 익숙하지는 않아서 날을 잡아 정리해봐야겠다.
'알고리즘 > 🥈 실버' 카테고리의 다른 글
백준 11866 요세푸스 문제0 자바 풀이 (0) | 2023.07.09 |
---|---|
백준 9095 1, 2, 3, 더하기 자바 풀이 (0) | 2023.07.09 |
백준 2161 카드1 자바 풀이 (0) | 2023.07.07 |
백준 2164 카드2 자바 풀이 (0) | 2023.07.06 |
백준 1158 요세푸스 문제 자바 풀이 (0) | 2023.07.03 |