Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백트래킹
- Recursion
- 정렬
- microflow
- Sort
- 그래프
- 트리
- Mendix
- 재귀
- domain model
- Bruteforce
- 이분탐색
- algorithm
- 멘딕스
- 자바
- 알고리즘
- 반효경교수님
- MySQL
- 스택
- lcap
- 자료구조
- 해시맵
- 프로그래머스
- SQL
- 매개변수 탐색
- git
- 집합
- 가중치없는그래프
- dfs
- 완전탐색
Archives
- Today
- Total
mondegreen
[240225] 알고리즘 리부트 16일차 - 백준 18870 자바 본문
알고리즘 풀이 및 리뷰/[패캠] 핵심유형 20개로 한 번에 끝내는 알고리즘 코딩테스트 리뷰
[240225] 알고리즘 리부트 16일차 - 백준 18870 자바
앙갱 2024. 2. 25. 00:21반응형
[Part1-Chapter05-Clip06]
- 백준 18870 좌표 압축
로직이 머리 속에서 한참 꼬여서 애를 먹었다. 처음에는 카운팅 배열을 쓰고자 했다. 간단하게 풀이가 가능할 것 같았지만 메모리 초과로 사용할 수 없었다. 어쩔 수 없이 다른 자료구조를 고민했다. 이차원 배열을 쓰자니 중복처리하는데 번거로울 것 같았고 해시셋을 쓰자니 순서부여가 어려워 해시맵을 이용해서 처리했다. 이미 키가 존재한다면 넘어가고 순서를 부여하는 인덱스를 별도로 관리했다.
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
int[] temp = new int[n];
for (int i = 0; i < n; i++) {
int thisNum = sc.nextInt();
arr[i] = thisNum;
temp[i] = thisNum;
}
// 임시배열은 정렬해주기
Arrays.sort(temp);
HashMap<Integer, Integer> map = new HashMap<>();
int idx = 0;
for (int i = 0; i < n; i++) {
if (map.containsKey(temp[i]))
continue;
map.put(temp[i], idx);
idx++;
}
for (int i = 0; i < n; i++) {
arr[i] = map.get(arr[i]);
}
StringBuilder sb = new StringBuilder();
for (int i : arr) {
sb.append(i + " ");
}
System.out.println(sb);
}
}
반응형
'알고리즘 풀이 및 리뷰 > [패캠] 핵심유형 20개로 한 번에 끝내는 알고리즘 코딩테스트 리뷰' 카테고리의 다른 글
[240229] 알고리즘 리부트 20일차 - 백준 1931 자바 (2) | 2024.02.29 |
---|---|
[240226] 알고리즘 리부트 17일차 - 백준 2910 자바 (0) | 2024.02.25 |
[240224] 알고리즘 리부트 15일차 - 백준 10814, 1302 자바 (1) | 2024.02.24 |
[240223] 알고리즘 리부트 14일차 - 백준 1181, 1427 자바 (0) | 2024.02.23 |
[240222] 알고리즘 리부트 13일차 - 백준 7785 자바 (0) | 2024.02.22 |