백준 1371 가장 많은 글자
이 문제에서 가장 중요한 포인트는, end of file 입니다.
홍익대학교 알고리즘 학회원인 degurii 님 덕분에 알게 되었습니다.
while(~scanf("%d", &variable)){ } 에서, 만약 scanf로 eof를 받게 되었다면, scanf 함수는 -1을 반환하고, 이를 비트(NOT) 연산 하게 되면 0으로 바뀌어 while문을 탈출하게 되는 구조 입니다.
소스 코드 :
#include#include using namespace std; int main() { // 알파벳의 빈도수를 저장할 배열선언 int arr[26] = { 0, }; char tmp; int maxcnt = 0; // eof일 때 까지 while loop while (~scanf("%c", &tmp)) { if (isalpha(tmp)) { (arr[tmp - 'a'])++; // 가장 많이 나오는 문자가 지금까지 최대 몇번 나왔는지 저장. if (maxcnt < arr[tmp - 'a']) { maxcnt = arr[tmp - 'a']; } } } for (int i = 0; i < 26; i++) { // 가장 많이 나왔던 개수를 가지고 있는 문자(들)을 출력. if (maxcnt <= arr[i]) { cout << (char)(i + 'a'); } } }
댓글
댓글 쓰기