728x90
난이도 : 실버3
풀이일 : 07075
https://www.acmicpc.net/problem/1021
링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐
풀이 코드
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 |