반응형
문제
https://www.acmicpc.net/problem/2776
해설
중첩 loop를 사용하지만 set을 이용하여 검사 시간을 개선시켜 해결하는 문제였다. N이 아무리 커져도 set형태로 만들면 숫자들의 집합이므로 크기는 0~9까지 10개의 원소만 남게 되기 때문이다.
Python
from sys import stdin
def solution(N, M):
for v in M:
if v in N:
print("1")
else:
print("0")
t = int(stdin.readline())
for _ in range(t):
n = int(stdin.readline())
note1 = set(map(int, stdin.readline().split(" ")))
m = int(stdin.readline())
note2 = list(map(int, stdin.readline().split(" ")))
solution(note1, note2)
Java
항상 Python만 이용하여 코딩 테스트를 연습하였는데, Spring BE 직군도 대비하기 위해 Java로 동일한 문제를 같이 풀어보았다. StringBuilder에 담아서 한 번에 출력하는 등의 코딩 테스트용 로직이 있는 것이 새로웠지만 적응해 가야겠다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder(); // 빠른 출력용 StringBuilder
int t = Integer.parseInt(br.readLine());
for (int i = 0; i < t; i++) {
int n = Integer.parseInt(br.readLine());
Set<Integer> note1 = new HashSet<>();
String[] note1Input = br.readLine().split(" ");
for(String s : note1Input) {
note1.add(Integer.parseInt(s));
}
int m = Integer.parseInt(br.readLine());
String[] note2Input = br.readLine().split(" ");
List<Integer> note2 = new ArrayList<>();
for(String s : note2Input) {
note2.add(Integer.parseInt(s));
}
checkNote(note1, note2, sb);
}
System.out.print(sb.toString());
}
public static void checkNote(Set<Integer> note1, List<Integer> note2, StringBuilder sb) {
for(int num : note2) {
if(note1.contains(num)) {
sb.append("1\n");
} else {
sb.append("0\n");
}
}
}
}
반응형