알고리즘 문제풀이/백준

#2605 : 줄 세우기

모항 2022. 4. 30. 16:57

풀이방법

사용된 것:

ArrayList

 

2022.04.30

ArrayList는 새로운 요소를 특정 인덱스에 추가하였을 때 그 인덱스보다 뒤에 있는 요소들을 자동으로 한 자리씩 뒤로 이동시켜준다. 따라서 이 문제는 ArrayList를 사용하면 쉽게 풀리는 문제이다.

 

학생이 뽑은 번호가 주어질 때마다

맨 뒷자리의 인덱스, 즉 이번 학생이 0을 뽑았을 경우 서야 하는 자리의 인덱스에서

학생이 뽑은 번호만큼을 빼서

그 인덱스에 학생을 add하면 된다.

 

코드

Java(2022.04.30)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n = Integer.parseInt(br.readLine());
		
		//학생 리스트 선언
		ArrayList<Integer> students = new ArrayList<Integer>();
		StringTokenizer st = new StringTokenizer(br.readLine());
		for(int i = 0; i<n; i++) {
			int num = Integer.parseInt(st.nextToken());
			students.add(i-num, i+1);	//맨 뒤 위치의 인덱스에서 뽑은 숫자를 뺀 만큼의 인덱스에 학생 추가
		}
		//정답 출력
		StringBuilder sb = new StringBuilder();
		for(int i : students) sb.append(i + " ");
		System.out.print(sb);
	}

}

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

#2869 : 달팽이는 올라가고 싶다  (0) 2022.05.01
#13335 : 트럭  (0) 2022.04.30
#4949 : 균형잡힌 세상  (0) 2022.04.29
#1449 : 수리공 항승  (0) 2022.04.28
#2108 : 통계학  (0) 2022.04.28