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 |
---|