728x90
문제
백준 no1920 : https://www.acmicpc.net/problem/1920
I : N개의 수로 이루어진 수열A를 입력받고, M개의 수로 이루어진 수열B를 입력받음
O : 수열 B에 포함된 수가 수열 A에 있는지 확인. 존재하면 1 없으면 0을 순차적으로 출력
원리
: M개의 수를 가진 수열B에서 하나씩 꺼내가 수열 A에 있는지 확인
* 참고링크 : 자료구조의 시간복잡도 https://hbase.tistory.com/185
풀이방법
1. 이중 반복문을 이용한 방법
2. Binary Search를 이용한 방법
3. 자료구조를 이용한 방법 (ArrayList) [시간복잡도 O(n)]
4. 자료구조를 이용한 방법 (Hashset) : 제일 빠름 Best [시간복잡도 O(1)]
나의 코드
1. 이중 반복문을 이용한 방법
더보기
import java.io.*;
import java.util.*;
public class no1920 {
/* 시간초과 : 이중for문 사용 방식 */
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
br.readLine();
String[] arrN = br.readLine().split(" ");
int M = Integer.parseInt(br.readLine());
boolean tf = false;
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for (int i = 0; i < M; i++) {
String X = st.nextToken();
for (int j = 0; j < arrN.length; j++) {
if (X.equals(arrN[j])) {
bw.write("1" + "\n");
tf = true;
break;
}
}
if(tf== false) {
bw.write("0" + "\n");
} else {
tf = false;
}
}
bw.close();
}
}
2. 자료구조를 이용한 방법 (ArrayList)
더보기
import java.io.*;
import java.util.*;
public class no1920 {
/* 시간초과 : ArrayList 사용 방식 */
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
ArrayList<String> listN = new ArrayList<>();
StringTokenizer stst = new StringTokenizer(br.readLine(), " ");
for (int i = 0; i < N; i++) listN.add(stst.nextToken());
int M = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
while(M-->0) {
String str = st.nextToken();
if(listN.contains(str)) {
bw.write("1"+"\n");
} else {
bw.write("0"+"\n");
}
}
bw.close();
}
}
3. 자료구조를 이용한 방법 (Hashset) : 제일 빠름 Best
import java.io.*;
import java.util.*;
public class no1920 {
/* Set 사용 */
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
Set<String> setN = new HashSet<>();
StringTokenizer stst = new StringTokenizer(br.readLine(), " ");
for(int i =0 ; i<N ; i++) setN.add(stst.nextToken());
int M = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
while(M-->0) {
String str = st.nextToken();
if(setN.contains(str)) {
System.out.println(1);
} else {
System.out.println(0);
}
}
}
}
레퍼런스 코드
🎁hyoreal님의 블로그 : https://hyospital.tistory.com/51
728x90
'알고리즘 저장소 (일반방식과 나만의 풀이) > JAVA' 카테고리의 다른 글
| [백준] no2869: 달팽이는 올라가고 싶다 (0) | 2023.01.04 |
|---|---|
| [Java] 코드 실행시간 측정 (0) | 2023.01.02 |
| [백준] no1259: 펠린드롬수 (0) | 2022.12.31 |
| [백준] no1436 : 영화감독 숌 (0) | 2022.12.31 |
| [백준] no1874. 스택수열 (0) | 2022.12.30 |