알고리즘
백준 4158 CD
킨글
2024. 6. 25. 22:27
문제
설명
- 정답률이 낮아서 걱정했지만, 내가 생각하는 방식대로 접근해보았다.
- Map에 값을 넣고, 값이 존재하면 result 값을 1씩 더하도록 처리하였다.
- 1번만 입력 받는게 아니라 0 0을 받을 때까지 계속 입력 받는 부분이라는 것을 놓쳐서 틀렸었다.
코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class Main {
// 4158 CD
public static void main(String[] args) throws IOException {
process();
}
private static void process() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// 배열에 값 넣기
while (true) {
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
if (N == 0 && M == 0) {
break;
}
Map<Long, Boolean> map = new HashMap<>();
for (int i = 0; i < N; i++) {
long num = Long.parseLong(br.readLine());
map.putIfAbsent(num, true);
}
int result = 0;
for (int i = 0; i < M; i++) {
long num = Long.parseLong(br.readLine());
boolean isOk = map.getOrDefault(num, false);
if (isOk) {
result+=1;
}
}
bw.write(result + "\n");
}
bw.flush();
bw.close();
}
}