작성일 :

문제 링크

4447번 - 좋은놈 나쁜놈

설명

각 히어로의 이름이 주어졌을 때, 이름 속에 포함된 알파벳 gb의 개수를 비교하여

g의 개수가 많으면 좋음, b의 개수가 많으면 나쁨, 같으면 중립으로 판정하는 문제입니다.


대소문자를 구분하지 않으며, 공백이나 다른 문자는 무시합니다.


접근법

  • 테스트케이스 개수를 입력받고, 그만큼 이름을 입력받습니다.
  • 각 이름 문자열에서 알파벳 g 또는 G, b 또는 B의 개수를 각각 카운트합니다.
    • g의 개수가 많으면 "is GOOD"
    • b가 많으면 "is A BADDY"
    • 같으면 "is NEUTRAL"
  • 결과에 따라 위 접미사를 이름 뒤에 이어 기준에 맞게 출력합니다.



Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;

class Program {
  static void Main() {
    int n = int.Parse(Console.ReadLine());
    while (n-- > 0) {
      var name = Console.ReadLine();
      int g = 0, b = 0;
      foreach (char c in name) {
        if (c == 'g' || c == 'G') g++;
        else if (c == 'b' || c == 'B') b++;
      }
      Console.Write(name + " is ");
      if (g > b) Console.WriteLine("GOOD");
      else if (g < b) Console.WriteLine("A BADDY");
      else Console.WriteLine("NEUTRAL");
    }
  }
}


C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int t; cin >> t;
  cin.ignore();
  while (t--) {
    string s; getline(cin, s);
    int g = 0, b = 0;
    for (char c : s)
      if (tolower(c) == 'g') g++;
      else if (tolower(c) == 'b') b++;

    cout << s << " is " << (g > b ? "GOOD" : g < b ? "A BADDY" : "NEUTRAL") << "\n";
  }

  return 0;
}