자료구조/문제풀이
[백준 JAVA] 1138 한 줄로 서기
휴먼코딩
2024. 9. 21. 05:36
1138 한 줄로 서기
https://www.acmicpc.net/problem/1138
문제설명
n개의 정수(1부터 n까지의 값)를 포함하는 배열을 받고 각 정수의 값에 해당하는 인덱스를 기록하여 출력한다.
예를 들어, 입력이 [3, 1, 4, 2]라면, 값이 3인 위치(1-based index)는 1
값이 1인 위치는 2, 값이 4인 위치는 3, 값이 2인 위치는 4가 된다.
접근방식
O(n) 선형 시간복잡도
입력받은 만큼 배열의 내용을 출력한다.
문제 조건 분석 과정
- 배열에 각 정수의 값(인덱스)에 해당하는 위치를 저장한다.
- 배열을 순회하며 결과를 출력한다.
전체코드
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] tall = new int[n + 1];
List<Integer> ans = new ArrayList<>();
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 1; i <= n; i++) {
tall[i] = Integer.parseInt(st.nextToken());
}
for (int i = n; i >= 1; i--) {
ans.add(tall[i], i);
}
for (int k : ans) {
System.out.print(k + " ");
}
}
}