문제
https://www.acmicpc.net/problem/1269
첫번째 제출 - 실패 (시간 초과)
가장 먼저 머릿속에 들었던 직관적인 방법으로 풀었더니 시간 초과..
package week9.baek.july7;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
public class S1269 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
int a = Integer.parseInt(input.split(" ")[0]);
int b = Integer.parseInt(input.split(" ")[1]);
Set<String> A = new HashSet<String>();
input = br.readLine();
for (int i = 0; i < a; i++) {
A.add(input.split(" ")[i]);
}
Set<String> B = new HashSet<String>();
input = br.readLine();
for (int i = 0; i < b; i++) {
B.add(input.split(" ")[i]);
}
//A-B
Set<String> A2 = new HashSet<>(A);
for (String s: B) {
if(A2.contains(s)) A2.remove(s);
}
//B-A
Set<String> B2 = new HashSet<>(B);
for (String s: A) {
if(B2.contains(s)) B2.remove(s);
}
//대칭 차집합
System.out.println(A2.size() + B2.size());
}
}
최종 코드
BufferedReader를 사용해서 input을 받고 split 함수를 통해 파싱을 했었는데 이것을 좀 더 빠른 StringTokenizer로 변경했더니 맞았다!
package week9.baek.july7;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;
public class S1269 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
Set<String> A = new HashSet<String>();
st = new StringTokenizer(br.readLine());
for (int i = 0; i < a; i++) {
A.add(st.nextToken());
}
Set<String> B = new HashSet<String>();
st = new StringTokenizer(br.readLine());
for (int i = 0; i < b; i++) {
B.add(st.nextToken());
}
//A-B
Set<String> A2 = new HashSet<>(A);
for (String s: B) {
if(A2.contains(s)) A2.remove(s);
}
//B-A
Set<String> B2 = new HashSet<>(B);
for (String s: A) {
if(B2.contains(s)) B2.remove(s);
}
//대칭 차집합
System.out.println(A2.size() + B2.size());
}
}
'‡ CODING TEST STUDY ‡ > º 백준' 카테고리의 다른 글
[백준 | Java Bronze III ] (#15633) Fan Death (0) | 2024.07.07 |
---|---|
[백준 | Java Silver V] (#10826) 피보나치 수 4 (0) | 2024.07.04 |
[백준 | Java Bronze III] (#1009) 분산처리 (0) | 2024.07.03 |
[백준 | Java Bronze II] (#3062) 수 뒤집기 (0) | 2024.07.03 |
[백준 | Java Bronze III] (#5622) 다이얼 (0) | 2024.06.26 |