[백준 2386] 도비의 영어 공부 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
여러 줄의 입력이 주어지는 상황에서, 각 줄에 소문자 하나와 공백, 그리고 영어 문장(최대 길이 250)이 주어질 때, 해당 문자가 문장에 대소문자 구분 없이 몇 번 등장하는지 세어 출력하는 문제입니다.
#로 시작하는 줄이 입력되면 종료되며, 각 줄마다 [문자] [횟수] 형식으로 결과를 출력합니다.
접근법
각 줄의 첫 번째 문자가 찾아야 할 기준 문자이며, 두 번째 문자는 공백입니다.
세 번째 문자부터 문장이 시작되므로, 문장의 각 문자를 대소문자 구분 없이 기준 문자와 비교하여 개수를 셉니다.
대문자를 소문자로 변환한 후 비교하면 대소문자를 구분하지 않고 일치 여부를 확인할 수 있습니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
namespace Solution {
class Program {
static void Main(string[] args) {
while (true) {
var line = Console.ReadLine();
if (line == null || line.StartsWith('#')) break;
var target = line[0];
var cnt = 0;
for (var i = 2; i < line.Length; i++) {
var c = char.ToLower(line[i]);
if (c == target) cnt++;
}
Console.WriteLine($"{target} {cnt}");
}
}
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string line;
while (getline(cin, line)) {
if (!line.empty() && line[0] == '#') break;
char target = line[0];
int cnt = 0;
for (size_t i = 2; i < line.size(); i++) {
char c = tolower(line[i]);
if (c == target) cnt++;
}
cout << target << ' ' << cnt << "\n";
}
return 0;
}