작성일 :

문제 링크

2386번 - 도비의 영어 공부

설명

여러 줄의 입력이 주어지는 상황에서, 각 줄에 소문자 하나와 공백, 그리고 영어 문장(최대 길이 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;
}