[문제 링크]
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
import java.util.*;
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);
}
}
이번 문제는 입력과 출력값이 왜 예시처럼 나오는지 이해하는데에 시간이 좀 걸렸다. 정확하게 이해한 것인지 아닌지 확인하기 위해 다른 블로그를 참고하였고, 그림을 통해 이해하면 훨씬 쉽게 이해할 수 있음을 깨닫고 그림으로 그려봤다.
즉, A 배열의 값과 B배열의 값과 인덱스로 배열 P를 찾아낼 수 있는 것이다.
위의 그림을 똑같이 코드로 구현한다면 아래와 같다.
A의 배열 값을 입력받아 생성하고, B 배열도 그대로 값을 받은 후 정렬한다.
P 배열은 -1 값으로 초기화한다.
이후 A 배열의 값과 B 배열의 값이 일치하고 P 배열의 값이 초기화되어 있을 때, P 배열의 값으로 B 배열의 인덱스를 준다.
'💻코딩 > 💡Baekjoon' 카테고리의 다른 글
[백준] 1021 회전하는 큐 (1) | 2023.12.13 |
---|---|
[백준] 1016 제곱 ㄴㄴ 수 (0) | 2023.05.02 |
[백준] 1014 컨닝 (0) | 2023.02.04 |
[백준] 1013 Contact (0) | 2023.01.16 |
[백준] 1012 유기농 배추 (2) | 2023.01.13 |