Algorithm
[백준] 1015. 수열 정렬(Java)
거북목을 가진 김기린
2024. 4. 25. 22:41
728x90
반응형
문제
1015번: 수열 정렬
P[0], P[1], ...., P[N-1]은 0부터 N-1까지(포함)의 수를 한 번씩 포함하고 있는 수열이다. 수열 P를 길이가 N인 배열 A에 적용하면 길이가 N인 배열 B가 된다. 적용하는 방법은 B[P[i]] = A[i]이다. 배열 A가 주
www.acmicpc.net
풀이
문제가 이해가 잘 되지는 않았지만, 예제의 입력과 출력을 보고 이해했다.
원본 A 배열과, 원본을 오름차순 정렬한 B를 이용하여
2중 for문을 통해 순회하면서
A와 B의 값이 같아지는 부분의 B 인덱스를 순차적으로 출력해주면 된다.(문제에서 원하는 답)
그리고 B인덱스는 방문 처리를 해주어 한 번만 출력하게 만들면 된다.
코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
int[] A = new int[N];
int[] B = new int[N];
boolean[] v = new boolean[N];
st = new StringTokenizer(br.readLine());
for(int i = 0 ; i < N ; i ++){
A[i] = Integer.parseInt(st.nextToken());
B[i] = A[i];
}
Arrays.sort(B);
for(int i = 0 ; i < N ; i ++){
for (int j = 0; j < N; j++) {
if (v[j] || A[i] != B[j]) continue;
v[j] = true;
sb.append(j).append(" ");
break;
}
}
System.out.println(sb);
}
}
728x90
반응형