본문 바로가기

Coding Test/코드업

[코드업/자바] 3004 - 데이터 재정렬

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        List<Integer> list = new ArrayList<>();
        for(int i=0; i<n; i++){
            int num = sc.nextInt();
            arr[i] = num;
            list.add(num);
        }
        sc.close();
        
        Collections.sort(list);
        Map<Integer, Integer> map = new HashMap<>();
        for(int i=0; i<n; i++){
            map.put(list.get(i), i);
        }
        for(int j : arr){
            System.out.print(map.get(j) + " ");
        }
    }
}

배열, 리스트, 맵 총동원해서 무식하게 풀었다...


import java.util.*;
import java.util.stream.Collectors;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int count = sc.nextInt();
        List<NoData> noDatum = new ArrayList<>();
        for (int i = 0; i<count; i++) {
            int no = sc.nextInt();
            noDatum.add(new NoData(0, no));
        }
        sc.close();

        List<NoData> sortedNoDatum = noDatum
                .stream()
                .sorted(Comparator.comparingInt(NoData::getNo))
                .collect(Collectors.toList());

        for (int i = 0; i < sortedNoDatum.size(); i++) {
            sortedNoDatum.get(i).setId(i);
        }

        String output = noDatum
                .stream()
                .map(e -> e.getId() + "")
                .collect(Collectors.joining(" "));

        System.out.println(output);
    }
}

class NoData {
    private int id;
    private int no;

    public NoData(int id, int no) {
        this.id = id;
        this.no = no;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getNo() {
        return no;
    }

    @Override
    public String toString() {
        return "NoData{" +
                "id=" + id +
                ", no=" + no +
                '}';
    }
}

클래스와 스트림을 이용한 풀이

'Coding Test > 코드업' 카테고리의 다른 글

[코드업/자바] 1805 - 입체기동장치 생산공장  (0) 2023.02.28