1. 문제
양의 정수를 원소로 갖는 길이가 N인 수열이 입력으로 주어졌을 때, 이 수열을 오름차순으로 정렬 했을 때 각각의 위치에 있던 원소가 어느 위치로 이동하는지 출력하는 코드를 작성
2. 풀이
배열을 정렬할때, 배열의 index도 동시에 움직여야하는데, 배열은 index랑 값을 동시에 활용할 수 없으니(동적 배열은 될 것 같기도하고...??)
배열의 값과 index를 동시에 가지는 새로운 클래스를 직접 정의하고
해당 클래스를 원소로 가지는 배열을 정렬하여
각 index가 정렬한 배열에서 어디에 위치하고 있는지 새로운 배열에 저장한 다음에 출력
import java.util.Scanner;
import java.util.Arrays;
class Tuple implements Comparable<Tuple> {
int x,num;
public Tuple(int x, int num){
this.x = x;
this.num = num;
}
@Override
public int compareTo(Tuple tuple){
return this.x - tuple.x;
}
}
public class Main {
public static void main(String[] args) {
// 여기에 코드를 작성해주세요.
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Tuple[] tupleArray = new Tuple[n];
for(int i = 0; i < n; i++){
tupleArray[i] = new Tuple(sc.nextInt(), i+1);
}
Arrays.sort(tupleArray);
int[] answer = new int[n+1];
for(int i = 0; i < n; i++){
answer[tupleArray[i].num] = i+1;
}
for(int i = 1; i < n+1; i++){
System.out.print(answer[i] + " ");
}
}
}
자바는 클래스를 정의하기가 쉬워서..??? 파이썬과는 다르게
필요하다고 느끼면 원하는 클래스를 직접 정의하여 사용해서 문제를 푼다고 항상 생각해야겠다
728x90
'알고리즘 > Java 기초' 카테고리의 다른 글
[Java]자바 HashMap 문제 풀면서 HashMap 이해력 높이기 1편 (0) | 2023.03.23 |
---|---|
자바 자료구조 우선순위 큐 심화응용 - 내가 원하는 우선순위에 맞는 우선순위 큐를 만드는 방법 (0) | 2023.03.19 |
자바 초보부터 B형까지 - 다양한 기준으로 정렬하기 위한 객체정렬 배우기 (0) | 2023.03.17 |
자바 초보부터 B형까지 - 자바에서 정렬을 하는 기본적인 방법들 - (0) | 2023.03.15 |
자바 자료구조5 -우선순위 큐 사용법- (0) | 2023.03.04 |