문제 출처 : https://www.acmicpc.net/problem/2605
문제
설명
난이도는 그렇게 높지 않은 문제로, 원하는 위치로 원소의 삭제 및 삽입이 가능한 ArrayList를 사용해서 인덱스 조작을 통해 문제를 해결했습니다.
문제에서 설명하는 것 그대로 구현해 주었는데, 먼저 학생이 뽑은 번호를 입력받은 다음 그 학생이 들어있는 곳을 인덱스를 통해 지웠습니다. 그런 다음, 학생이 뽑은 번호에 따라 그 학생을 앞으로 옮겨주는 작업을 전체 학생 수인 N번 반복하면 됩니다.
코드
import java.util.ArrayList;
import java.util.Scanner;
public class BOJ2605_Queuing {
public static void main(String[] args) {
ArrayList<Integer> arr = new ArrayList<>();
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); //학생들의 수
for(int i=1; i<=N; i++) {
arr.add(i);
} //학생들의 번호를 순서대로 arr에 저장
for(int i=0; i<N; i++) {
int n = sc.nextInt(); //학생이 뽑은 번호 (순서대로 뽑음)
arr.remove(i); //먼저 학생 번호가 들어있는 곳을 지움
arr.add(i-n, i+1); //학생이 뽑은 번호에 따라 학생을 앞으로 옮김
}
for(int i : arr) {
System.out.print(i + " ");
}
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준][JAVA] 2578 - 빙고 (0) | 2021.10.10 |
---|---|
[백준][JAVA] 2564 - 경비원 (0) | 2021.10.05 |
[백준][JAVA] 9375 - 패션왕 신해빈 (0) | 2021.10.03 |
[백준][BOJ] 2606 : 바이러스 (0) | 2021.10.03 |
[백준][JAVA] 15900 : 나무 탈출 (0) | 2021.10.03 |