BOJ

백준 1015 - 수열 정렬

yanJuicy 2022. 1. 31. 12:10
반응형

문제

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