[백준 30266] Hurricane Warning (C#, C++) - soo:bak
작성일 :
문제 링크
설명
당국이 사용한 매체와 각 사람이 소비하는 매체가 겹치는 경우 경고를 받은 것으로 보고, 경고를 받은 사람 수를 세는 문제입니다.
접근법
당국이 사용한 매체를 배열에 표시해둡니다. 각 사람의 소비 매체 문자열을 순회하면서 당국 매체와 겹치는 문자가 하나라도 있으면 그 사람은 경고를 받은 것으로 처리합니다. 모든 사람을 확인한 뒤 경고를 받은 인원 수를 출력합니다.
Code
C#
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
using System;
class Program {
static void Main() {
var k = int.Parse(Console.ReadLine()!);
for (var tc = 1; tc <= k; tc++) {
var n = int.Parse(Console.ReadLine()!);
var usedStr = Console.ReadLine()!;
var used = new bool[26];
foreach (var ch in usedStr) used[ch - 'A'] = true;
var count = 0;
for (var i = 0; i < n; i++) {
var s = Console.ReadLine()!;
var ok = false;
foreach (var ch in s) {
if (used[ch - 'A']) { ok = true; break; }
}
if (ok) count++;
}
Console.WriteLine($"Data Set {tc}:");
Console.WriteLine(count);
Console.WriteLine();
}
}
}
C++
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
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int k; cin >> k;
for (int tc = 1; tc <= k; tc++) {
int n; cin >> n;
string usedStr; cin >> usedStr;
bool used[26] = {};
for (char c : usedStr)
used[c - 'A'] = true;
int cnt = 0;
for (int i = 0; i < n; i++) {
string s; cin >> s;
bool ok = false;
for (char c : s) {
if (used[c - 'A']) { ok = true; break; }
}
if (ok) cnt++;
}
cout << "Data Set " << tc << ":\n" << cnt << "\n\n";
}
return 0;
}