문제설명

 

소스코드

import java.util.Arrays;
import java.util.Scanner;
public class Main
{
	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int arr[][] = new int[2][N]; //2행 N열 배열
		for(int i = 0; i < arr[0].length; ++i)
		{
			arr[0][i] = sc.nextInt(); //0행 입력받음
			arr[1][i] = arr[0][i]; //1행의 값들은 0행의 값들과 같게함
		}
		Arrays.sort(arr[1]); //1행의 값들을 정렬시킴
		for(int i = 0; i < N; ++i)//기존 배열과 정렬된 배열의 값이 같은 인덱스를 찾음
		{
			for(int j = 0; j < N; ++j)
			{
				if(arr[0][i] == arr[1][j])//기존 배열과 정렬된 배열의 값이 같다면
				{
					System.out.print(j + " ");//인덱스를 출력함
					arr[1][j] = -1;//중복 인덱스 출력을 방지하기 위해 -1로 바꿈
					break;
				}
			}
		}
	}
}

 

설명

여담이지만, 내가 국어를 못하는건지 수학을 못하는건지 자괴감이 올 정도로 문제 이해 자체가 잘 안되었던 문제이다.

아래의 내용은 chatGPT에게 문제를 쉽게 설명해달라는 부탁의 내용이다.

  • 배열 A[2, 3, 1]이 주어지면 이를 정렬하면 1, 2, 3이 된다.
  • 정렬된 배열의 인덱스를 기존 배열(정렬되지 않은 배열)의 순서대로 출력한다
  • 아래의 그림은 기존 배열과 정렬된 배열을 매핑한 관계를 나타낸다.

  • 2 -> 2 -> 1
    3 -> 3 -> 2
    1 -> 1 -> 0
    이를 나열하면 1, 2, 0이된다.
비내림차순
비내림차순은 내림차순과 반대되는 개념이다.
즉, 오름차순과 비슷한 개념이다.
하지만 오름차순과는 차이가 있다.
오름차순은 왼쪽에서 오른쪽으로 갈때 무조건 숫자가 커져야하지만, 비내림차순은 왼쪽에서 오른쪽으로 갈때 같은숫자가 있을 수도 있다.
chatGPT 답변내용