
HashMap을 사용한 소스코드:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.HashMap;
import java.util.StringTokenizer;
public class Main {
static BufferedReader br;
static BufferedWriter bw;
public static void main(String[] args) throws IOException {
br = new BufferedReader(new InputStreamReader(System.in));
bw = new BufferedWriter(new OutputStreamWriter(System.out));
HashMap<Integer, Integer> hashMap = new HashMap<>();
int N = Integer.parseInt(br.readLine());
int[] dots = new int[N];
int[] sorted = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
dots[i] = sorted[i] = Integer.parseInt(st.nextToken());
}
br.close();
Arrays.sort(sorted);
int rank = 0;
for (int temp : sorted) {
if (!hashMap.containsKey(temp)) {
hashMap.put(temp, rank);
rank++;
}
}
for (int dot : dots) {
bw.write(hashMap.get(dot) + " ");
}
bw.close();
}
}
binarhSearch를 사용한 코드:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.HashSet;
import java.util.StringTokenizer;
public class Main {
static BufferedReader br;
static BufferedWriter bw;
public static void main(String[] args) throws IOException {
br = new BufferedReader(new InputStreamReader(System.in));
bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
int[] dots = new int[N];
HashSet<Integer> set = new HashSet<>();
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
int num = Integer.parseInt(st.nextToken());
dots[i] = num;
set.add(num);
}
br.close();
int[] sorted = set.stream().mapToInt(Integer::intValue).sorted().toArray();
for (int dot : dots) {
bw.write(Arrays.binarySearch(sorted, dot) + " ");
}
bw.close();
}
}
글의 내용 중 잘못된 점이나 수정이 필요한 부분, 혹은 궁금한 사항이 있다면 언제든 댓글로 남겨주시면 감사하겠습니다.
여러분의 피드백은 더 나은 글을 작성하는 데 큰 도움이 됩니다. 감사합니다.
'알고리즘 > 백준' 카테고리의 다른 글
| [JAVA-자바] 14940번: 쉬운 최단거리 (0) | 2025.03.25 |
|---|---|
| [JAVA-자바] 1697번: 숨바꼭질 (0) | 2025.03.22 |
| [JAVA-자바] 11724번: 연결 요소의 개수 (0) | 2025.03.21 |
| [JAVA-자바] 2805번: 나무 자르기 (0) | 2025.03.21 |
| [JAVA-자바] 17626번: Four Squares (0) | 2025.03.21 |