https://www.acmicpc.net/problem/18870
리스트와 맵 사용
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Map<Integer, Integer> map = new HashMap<>();
List<Integer> list = new ArrayList<>();
List<Integer> sortedlist = new ArrayList<>();
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0; i<N; i++){
int num = Integer.parseInt(st.nextToken());
list.add(num);
}
sortedlist.addAll(list);
Collections.sort(sortedlist);
int value = 0;
for(int i=0; i<sortedlist.size(); i++){
if(!map.containsKey(sortedlist.get(i))){
map.put(sortedlist.get(i), value++);
}
}
for(int i=0; i<arr.length; i++){
if (map.containsKey(list.get(i))) {
list.set(i, map.get(list.get(i)));
}
}
StringBuilder sb = new StringBuilder();
for(int i=0; i<list.size(); i++){
sb.append(list.get(i)).append(" ");
}
System.out.println(sb);
}
}
처음에 맵을 사용하지 않고 리스트 두개로 했는데, 시간초과 나와서 블로그를 참고해서 했다.
'알고리즘 > 백준' 카테고리의 다른 글
백준 15650번 - N과 M (2) - (Java 8) (0) | 2022.03.06 |
---|---|
백준 15649번 - N과 M (1) (Java 8) (0) | 2022.03.05 |
백준 10814번 - 나이순 정렬 (Java 8) (0) | 2022.03.04 |
백준 1181번 - 단어 정렬 (Java 8) (0) | 2022.03.04 |
백준 11651번 - 좌표 정렬하기 2 (Java 8) (0) | 2022.03.04 |
댓글