반응형
문제
https://www.acmicpc.net/problem/1015
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
풀이
아래 그림에서 P 배열을 구하는 문제이다. A 배열을 정렬해 B 배열을 만들고, A와 B를 이용해 P배열을 구하면 된다.
B 배열이 정렬돼 있으므로 B 배열에 있는 값과 A 배열에 있는 값을 비교해 P 배열에 값을 넣을 수 있다. B 배열에 있는 값을 A 배열에서 찾은 후, 찾은 A 배열의 인덱스를 그대로 몇 번째로 찾았는지 P 배열에 저장하면 된다.
코드
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static int N;
static int[] A, B, P;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) {
input();
solve();
System.out.println(sb.toString());
}
private static void solve() {
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (A[j] == B[i] && P[j] == -1) {
P[j] = i;
break;
}
}
}
for (int i : P) {
sb.append(i + " ");
}
}
private static void input() {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
A = new int[N];
B = new int[N];
P = new int[N];
for (int i = 0; i < N; i++) {
A[i] = sc.nextInt();
B[i] = A[i];
}
Arrays.fill(P, -1);
Arrays.sort(B);
}
}
반응형
'BOJ' 카테고리의 다른 글
백준 15970 - 화살표 그리기 (0) | 2022.02.02 |
---|---|
백준 20291 - 파일 정리 (0) | 2022.02.01 |
백준 11286 - 절댓값 힙 (0) | 2022.01.28 |
백준 2164 - 카드2 (0) | 2022.01.25 |
백준 9012 - 괄호 (0) | 2022.01.24 |