Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
관리 메뉴

으하하 공부일기

[SWEA] - 2948. 문자열 교집합 (D3) 본문

SWEA/D3

[SWEA] - 2948. 문자열 교집합 (D3)

0으하하0 2022. 5. 7. 20:25

[문제]

문자열 집합은 알파멧 소문자로 이루어진 문자열들로 구성된 집합을 의미한다.
예를 들어 {"aba", "cdefasad", "wefawef"}은 문자열 3개로 구성된 한 개의 문자열 집합이다.
입력으로 2개의 문자열 집합이 주어졌을 때에, 두 집합에 모두 속하는 문자열 원소의 개수를 출력하는 프로그램을 작성하시오.

[입력]
첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스마다 첫 번째 줄에 두 집합의 원소의 갯수를 나타내는 두 자연수 N M(1≤N, M≤105)이 주어진다.
둘째 줄에는 첫 번째 집합의 원소 문자열들이 공백을 사이에 두고 주어진다.
셋째 줄에는 두 번째 집합의 원소 문자열들이 공백을 사이에 두고 주어진다.
각 문자열은 소문자 알파벳으로만 구성되며, 길이가 1 이상 50 이하임이 보장된다.
한 집합에 같은 문자열이 두 번 이상 등장하지 않음이 보장된다.

[출력]
각 테스트 케이스마다 첫째 줄에 ‘#x’(x는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력한 다음, 공백을 하나 사이에 두고 해당 테스트 케이스의 답을 출력한다.

 

문제 풀기

2948. 문자열 교집합

 


[풀이]

  • HashSet을 이용하여 첫 번째 집합의 원소 문자열을 저장한다.
  • 두 번째 문자열을 받을 때 첫번째 집합(HashSet)에 포함되어있는지 판단한다.
import java.util.HashSet;
import java.util.Scanner;

class Solution {	
	public static void main(String[] args) throws Exception {		
		Scanner sc = new Scanner(System.in);
		
		int t = sc.nextInt();
		
		for(int tc=1; tc<=t; tc++) {
			int n = sc.nextInt();
			int m = sc.nextInt();
			
			int cnt = 0;
			HashSet<String> hash = new HashSet<String>();
			
			for(int i=0; i<n; i++) hash.add(sc.next());
			for(int i=0; i<m; i++) if(hash.contains(sc.next())) cnt++;
			
			System.out.format("#%d %d\n", tc, cnt);
		}
	}
}

'SWEA > D3' 카테고리의 다른 글

[SWEA] - 3032. 홍준이의 숫자 놀이 (D3)  (0) 2022.05.08
[SWEA] - 2930. 힙 (D3)  (0) 2022.05.07
[SWEA] - 2817. 부분 수열의 합 (D3)  (0) 2022.05.07
[SWEA] - 2814. 최장 경로 (D3)  (0) 2022.05.07
[SWEA] - 2805. 농작물 수확하기 (D3)  (0) 2022.05.07