풀이 (파이썬)
import sys; import collections
N = int(sys.stdin.readline())
nums = list(map(int, sys.stdin.readline().strip().split()))
new_nums = list(set(nums))
new_nums.sort()
graph = collections.defaultdict(int)
for i in range(len(new_nums)):
graph[new_nums[i]] = i
for num in nums:
print(graph[num], end=' ')
풀이 (자바)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(bf.readLine());
List<Integer> arr = new ArrayList<>();
String[] tmpInput = bf.readLine().split(" ");
for (int i = 0; i < N; i++) {
arr.add(Integer.parseInt(tmpInput[i]));
}
Set<Integer> tmpset = new HashSet<>(arr);
List<Integer> arrList = new ArrayList<>(tmpset);
Collections.sort(arrList);
List<Integer> rst = new ArrayList<>();
for (int i = 0; i < N; i++) {
Integer a = Collections.binarySearch(arrList, arr.get(i));
rst.add(a);
}
for (int i = 0; i < N; i++) {
bw.write(String.valueOf(rst.get(i)) + " ");
}
bw.close();
}
}
해설?
- 분류에 정렬이 있어서 스포당해버렸다.
- 중복 값을 제거한 후 정렬하여 그 인덱스를 사용하면 된다.
'백준' 카테고리의 다른 글
백준 15686 치킨 배달 (파이썬) (0) | 2022.11.08 |
---|---|
백준 1406 에디터 (파이썬) (0) | 2022.11.06 |
백준 1874 스택 수열 (파이썬) (0) | 2022.10.28 |
백준 9020 골드바흐의 추측 (파이썬) (0) | 2022.10.23 |
백준 1149 RGB거리 (파이썬) (0) | 2022.10.23 |