Notice
Recent Posts
Recent Comments
Link
개발 공부~
[백준 - 14425] 문자열 집합 .java 본문
https://www.acmicpc.net/problem/14425
Set 풀이
- 집합 -> Set 으로 n개를 저장
- 검사하기 위해 contains 메서드 활용
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
public class Solution {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
Set<String> s = new TreeSet<>();
for(int i =0;i<n;i++) {
s.add(sc.next());
}
int answer = 0;
while(m-->0) {
String test = sc.next();
if(s.contains(test)) answer++;
}
System.out.println(answer);
}
}
배열 풀이 -> 이분 탐색
str1.compareTo(str2)
:str1과 str2를 사전순으로 비교한 결과를 정수로 반환
반환값 의미 (사전순 기준)
음수 (< 0): str1이 str2보다 앞에 있음
0 : str1과 str2가 같음
양수 (> 0): str1이 str2보다 뒤에 있음
import java.util.Arrays;
import java.util.Scanner;
public class Solution {
public static boolean isExist(String[] s, String test) {
int l = 0;
int r = s.length -1;
while(l<=r) {
int mid = (l+r)/2;
int result = s[mid].compareTo(test);
if(result ==0) return true;
else if(result>0) r = mid-1;
else l = mid+1;
}
return false;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
String[] s = new String[n];
for(int i =0;i<n;i++) {
s[i] = sc.next();
}
Arrays.sort(s);
int answer = 0;
while(m-->0) {
String test = sc.next();
if(isExist(s,test)) answer++;
}
System.out.println(answer);
}
}
'코딩테스트 > 백준' 카테고리의 다른 글
[백준 - 2470] 두 용액 .java (1) | 2025.05.18 |
---|---|
[백준 - 2295] 세 수의 합 .java (1) | 2025.05.18 |
[백준 - 19951] 태상이의 훈련소 생활 .java (0) | 2025.05.17 |
[백준 - 16713] Generic Queries .java (0) | 2025.05.17 |
[백준 - 18310] 안테나 .java (0) | 2025.05.17 |