-
[백준/C] 1157번Problem Solving 2022. 7. 13. 01:15
입력된 문자열에서 가장 많이 사용된 알파벳을 찾는 문제이다.
가장 많이 사용된 알파벳이 두 개 이상일 경우 물음표를 출력하고, 아닐 경우 그 알파벳을 대문자로 출력한다.
소문자로 출력되게 해 놓고 왜 틀렸지 하며 한참동안 뻘짓했다.
문제를 잘 읽자..
#include <stdio.h> #define _CRT_SECURE_NO_WARNINGS #define SIZE 26 void put_zero(int arr[]) { for (int i = 0; i < SIZE; i++) arr[i] = 0; } int get_max_idx(int arr[]) { int max; int max_idx; max = arr[0]; max_idx = 0; for (int i = 0; i < SIZE; i++) { if (arr[i] > max) { max = arr[i]; max_idx = i; } } return (max_idx); } int is_duplicate(int arr[], int max_idx) { int max_cnt; max_cnt = 0; for (int i = 0; i < SIZE; i++) { if (arr[i] == arr[max_idx]) max_cnt++; if (max_cnt > 1) return (1); } return (0); } char get_most_used(char str[]) { int arr[SIZE]; int i; int max_idx; i = 0; put_zero(arr); while (str[i] != 0) { if (str[i] >= 'a' && str[i] <= 'z') arr[str[i] - 'a']++; else if (str[i] >= 'A' && str[i] <= 'Z') arr[str[i] - 'A']++; i++; } max_idx = get_max_idx(arr); if (is_duplicate(arr, max_idx)) return (0); return (max_idx + 'A'); } int main(void) { char str[1000001]; char res; scanf("%s", str); if (!(res = get_most_used(str))) printf("?\n"); else printf("%c\n", res); return (0); }
'Problem Solving' 카테고리의 다른 글
[백준/C] 2908 (0) 2022.07.13 [백준/C] 1152 (0) 2022.07.13 [백준/C] 2839번 - 설탕 배달 (0) 2022.05.14 [백준/C] 10250번 - ACM 호텔 (0) 2022.05.12 [백준/C] 2869번 - 달팽이는 올라가고 싶다 (0) 2022.05.12