[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; }
댓글
댓글 쓰기