2024-03-25 23:14:22

뭐 말을 좀 꼬아 놨는데, 쉽게말해 첫째 줄에 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