[백준/JAVA] 해시를 사용한 집합과 맵 1920 수 찾기
2025. 1. 3. 15:21ㆍCoding Test/백준
나의 답) 592ms
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
HashSet<Integer> set = new HashSet<>();
for (int i = 0; i < n; i++) {
set.add(Integer.parseInt(st.nextToken()));
}
int m = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
int[] comp = new int[m];
for (int i = 0; i < m; i++) {
comp[i] = Integer.parseInt(st.nextToken());
}
for (int i = 0; i < m; i++) {
if (set.contains(comp[i])) {
sb.append("1").append("\n");
} else {
sb.append("0").append("\n");
}
}
System.out.print(sb);
}
}
해당 문제는 특정 정수의 존재 여부만 확인하면 된다.
따라서 데이터의 순서가 중요하지 않기에 Set을 사용하였다.
평균 시간 복잡도: O(1)
개선 가능 사항
1. com 배열 불필요
: comp 배열은 단순히 값을 저장했다가 set에서 확인하는 용도로만 사용된다.
대신, st.nextToken()을 바로 set.contains()로 확인하면 메모리를 절약할 수 있다.
2.가독성 개선
: 변수명은 코드의 의도를 더 명확히 하기 위해 조금 더 구체적으로 설정할 수 있다.
개선된 코드) 552ms
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
HashSet<Integer> set = new HashSet<>();
while(st.hasMoreTokens()) {
set.add(Integer.parseInt(st.nextToken()));
}
int m = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
while(st.hasMoreTokens()) {
int num = Integer.parseInt(st.nextToken());
if (set.contains(num)) sb.append("1\n");
else sb.append("0\n");
}
System.out.print(sb);
}
}
'Coding Test > 백준' 카테고리의 다른 글
[백준/JAVA] 해시를 사용한 집합과 맵 1764 듣보잡 (1) | 2025.01.03 |
---|---|
[백준/JAVA] 해시를 사용한 집합과 맵 10816 숫자 카드 2 (0) | 2025.01.03 |
[JAVA] 백준 9단계 약수, 배수와 소수 (0) | 2024.11.30 |
[JAVA] 백준 13단계 정렬 (0) | 2024.11.24 |
[JAVA] 백준 10단계 기하: 직사각형과 삼각형 (0) | 2024.11.12 |