7주차 · 정렬
보통정렬해시

좌표 압축

정수 배열 values가 주어져요. 각 값을 자신보다 작은 서로 다른 값의 개수로 바꾼 배열을 반환해요.

즉 등장하는 서로 다른 값들을 오름차순으로 정렬해 0, 1, 2… 순위를 매긴 뒤, 원래 순서를 유지한 채 각 값을 그 순위로 치환해요. 같은 값은 같은 순위를 가져요.

예시

예시 1
예시 2

제한 사항

  • 1 ≤ values.length ≤ 100,000
  • -10^9 ≤ values[i] ≤ 10^9
[...new Set(values)]로 중복을 없앤 뒤 정렬하고, 값 → 순위 맵을 만들어 원래 배열을 매핑해요. Python은 sorted(set(values))와 딕셔너리 컴프리헨션을 쓰면 돼요.
javascript
function coordinateCompression(values) {
const sorted = [...new Set(values)].sort((a, b) => a - b);
const rank = new Map(sorted.map((v, i) => [v, i]));
return values.map((v) => rank.get(v));
}
이전 문제K번째 큰 수
다음 문제애너그램 묶기
에디터를 불러오고 있어요…
코드를 작성하고를 눌러 예시 테스트를 확인해 보세요.