뭐 말을 좀 꼬아 놨는데, 쉽게말해 첫째 줄에 N, M이 주어진다.
2번째 줄 부터 N+1 줄 까지는 첫번째 배열에 들어가는 문자열들이 주어지고,
N+2 줄부터 마지막 쭐 까지 두번째 배열에 들어가는 문자열들이 주어진다.
이후 두번째 배열에 있는 문자열들이 첫번째 배열에 "몇 개" 가 들어있는지 출력해주면 된다.
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
32
33
34
35
36
37
38
39
40
41
42
|
using System.IO;
using System.Text;
using System.Linq;
using System.Reflection.PortableExecutable;
namespace 연습장
{
internal class Program
{
static void Main(string[] args)
{
using var reader = new StreamReader(Console.OpenStandardInput());
using var print = new StreamWriter(Console.OpenStandardOutput());
StringBuilder sb = new StringBuilder();
int[] input = Array.ConvertAll(reader.ReadLine().Split(), int.Parse);
int N = input[0]; int M = input[1];
string[] str1 = new string[N];
string[] str2 = new string[M];
for (int i = 0; i < N; i++)
str1[i] = reader.ReadLine().ToLower();
HashSet<string> set1 = new HashSet<string>(str1);
for (int j = 0; j < M; j++)
str2[j] = reader.ReadLine().ToLower();
Array.Sort(str2);
int cnt = 0;
foreach (string s in str2)
{
if (set1.Contains(s))
cnt++;
}
print.WriteLine(cnt);
}
}
}
|
cs |
각 배열에 문자열들을 N회, M회 만큼 입력받아서 넣어준다.
비교군이 들어있는 1번 배열은 해시셋으로 만들어준다.
비교를 할 두번째 배열은 정렬을 해 둔다. (해시셋을 통한 인덱싱은 정렬이 필수)
그리고 배열 1이 배열 2의 내용을 포함하는지 검사 해준 후, 있으면 카운트를 1 증가, 없으면 통과 하여 ㅗ최종적으로 카운트 값을 출력해주면 된다.
'하루 한 접시' 카테고리의 다른 글
[백준] 좌표 압축 [C#] (0) | 2024.03.25 |
---|---|
[백준] 1037 약수 [C#] (0) | 2024.03.25 |
[백준] 2839번: 설탕 배달 [C#] (1) | 2024.03.24 |
[백준] 1018 체스판 다시 칠하기 [C#] (0) | 2024.03.24 |
[백준] 1764번: 듣보잡 [C#] (1) | 2024.03.24 |