항해99를 하면서 풀어봤던 문제지만 다시 한 번 풀어보기
https://www.acmicpc.net/problem/10815
- 예제 입력1
5
6 3 2 10 -10
8
10 9 -5 2 3 4 5 -10
- 예제 출력1
1 0 0 1 1 0 0 1
- 문제 접근
- 입력
- 첫째 줄 : 숫자 카드의 개수(1 <= N <= 500,000)
- 둘째 줄 : 숫자 카드에 적혀있는 정수(-10,000,000 ~ 10,000,000)
- 셋째 줄 : M(1 <= M <= 500,000)
- 넷째 줄 : 상근이가 가진 숫자카드인지 아닌지를 구해야할 M개의 정수(-10,000,000~10,000,000)
- 출력
- 첫째 줄에 입력으로 주어진 M개의 수에 대해서, 각 수가 적힌 숫자 카드를 상근이가 가지고 있으면 1, 아니면 0으로 공백으로 구분해 출력
- 입력
- 문제 해결
- 상근이가 가진 카드의 숫자들(둘째 줄)을 N번(첫째 줄)만큼 Set에 추가
- 비교할 숫자 카드(넷째 줄)을 M번 반복하여 Set에 있으면 1, 없으면 0을 StringBuilder에 추가하여 출력
- 기존 풀이 [메모리 : 136,576KB / 시간 : 848ms]
public static void main(String[] args) throws IOException{
Set<Integer> numberSet = new HashSet<>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i = 0; i < N; i++){
numberSet.add(Integer.parseInt(st.nextToken()));
}
int M = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
for(int i = 0; i < M; i++){
int number = Integer.parseInt(st.nextToken());
if(numberSet.contains(number))
sb.append("1").append(" ");
else
sb.append("0").append(" ");
}
sb.deleteCharAt(sb.length() - 1);
System.out.println(sb);
}
- Stream 풀이 [메모리 : 155,908KB / 시간 : 932ms]
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
br.readLine();
Set<Integer> numberSet = Arrays.stream(br.readLine().split(" "))
.map(Integer::parseInt)
.collect(Collectors.toSet());
br.readLine();
int[] compare = Arrays.stream(br.readLine().split(" "))
.mapToInt(Integer::parseInt)
.toArray();
Arrays.stream(compare)
.mapToObj(i -> numberSet.contains(i) ? "1" : "0")
.forEach(res -> sb.append(res).append(" "));
System.out.println(sb);
}
'Coding Test > Step14. 집합과 맵' 카테고리의 다른 글
[Java] 6단계. 듣보잡 [1764번] (0) | 2024.11.03 |
---|---|
[Java] 5단계. 숫자 카드 2 [10816번] (0) | 2024.11.03 |
[Java] 4단계. 나는야 포켓몬 마스터 이다솜 [1620번] (0) | 2024.11.02 |
[Java] 3단계. 회사에 있는 사람 [7785번] (0) | 2024.11.02 |
[Java] 2단계. 문자열 집합 [14425번] (0) | 2024.11.02 |