Post List

[BOJ] 백준 1157 단어 공부

[BOJ] 백준 1157 단어 공부



문제 링크 : https://www.acmicpc.net/problem/1157


한 문자열을 입력받았을 때 특정 알파벳의 개수를 각각 26개 변수에 저장해 주고,
26개 변수중 가장 큰 값을 가지는 변수가 2개 이상 있을경우 '?' 출력, 그 외엔 큰 값 출력하면 되는 문제입니다.


소스 코드 :

#include 
#include 
#include 
using namespace std;

int main() {
 vector v(26, 0);
 string s; cin >> s; cin.ignore();
 int bigcnt = 0;
 int idx = 0;
 for (int i = 0; i < s.length(); i++) {
  if (s[i] <= 90) { // s[i]가 대문자라면
   v[s[i] - 65] ++;
   if (bigcnt < v[s[i] - 65]) {
    bigcnt = v[s[i] - 65];
    idx = s[i] - 65;
   }
  }
  else { // 소문자인 경우
   v[s[i] - 97] ++;
   if (bigcnt < v[s[i] - 97]) {
    bigcnt = v[s[i] - 97];
    idx = s[i] - 97;
   }
  }
 }
 int check = 0;
 for (int i = 0; i < 26; i++) {
  if (v[i] >= bigcnt) {
   check++;
  }
 }
 if (check == 1) cout << (char)(idx + 65) << endl;
 else cout << '?' << endl;
}

댓글