반응형
숫자카드를 가지고 있다면 1, 아니라면 0을 출력하는 문제.
HashSet 기능을 이용한다면 간단히 해결할 수 있다.
2023.10.17 - [Java/개념정리] - [Java] HashSet 에 대해 알아보자
첫 입력에서 add()메소드로 해쉬에 추가한 후, 두번째 입력에서 contains() 메소드를 이용해 해당 숫자를 포함하는지 아닌지를 판단하여 출력하면 된다.
두 가지 방식으로 해결해보았다.
먼저 Scanner를 이용한 방법
// 해설참조 : sehyeok.tistory.com
import java.io.IOException;
import java.util.HashSet;
import java.util.Scanner;
public class Main {
public static void main(String args[]) throws IOException {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
HashSet<Integer> card = new HashSet<Integer>(); // Hash 생성
for (int i = 0; i < n; i++) {
card.add(sc.nextInt()); // Hash에 추가
}
int m = sc.nextInt();
for (int i = 0; i < m; i++) {
if (card.contains(sc.nextInt())) { // 해당 숫자가 Hash 에 포함되어 있다면
System.out.print(1 + " ");
} else {
System.out.print(0 + " ");
}
}
sc.close();
}
}
두 번째는 BufferedReader를 이용한 방법.
이 때는 StringTokenizer 클래스를 이용해 입력 받은 문자열을 공백을 기준으로 분리해준다.
2023.10.25 - [Java/개념정리] - [Java] 문자열 분리 (split, StringTokenizer 사용법)
// 해설참조 : sehyeok.tistory.com
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.StringTokenizer;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
HashSet<Integer> card = new HashSet<Integer>(); // Hash 생성
StringTokenizer st = new StringTokenizer(br.readLine()); // StringTokenizer생성
for (int i = 0; i < n; i++) {
card.add(Integer.parseInt(st.nextToken())); // 띄어쓰기 기준으로 문자열 분리, Hash에 추가
}
int m = Integer.parseInt(br.readLine());
StringTokenizer st2 = new StringTokenizer(br.readLine()); // 새 StringTokenizer 생성
for (int i = 0; i < m; i++) {
if (card.contains(Integer.parseInt(st2.nextToken()))) { // 분리한 문자열이 Hash에 포함되어 있다면
System.out.print(1 + " ");
} else {
System.out.print(0 + " ");
}
}
}
}
두 방법의 성능 차이는 다음과 같다.
반응형
'Java > 백준알고리즘' 카테고리의 다른 글
[Java] 백준알고리즘 #7785 회사에 있는 사람 (63) | 2023.10.26 |
---|---|
[Java] 백준알고리즘 #14425 문자열 집합 (52) | 2023.10.26 |
[Java] 백준알고리즘 #25501 재귀의 귀재 (1) | 2023.10.23 |
[Java] 백준알고리즘 #10870 피보나치 수 5 (9) | 2023.10.19 |
[Java] 백준알고리즘 #27433 팩토리얼 2 (1) | 2023.10.19 |