티스토리 뷰
문제.
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
입출력.
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
#include <stdio.h>
#include <string.h>
int main(void){
//문제1157 / 2021.02.25
char str[1000000]; //주어지는 단어의 길이는 1,000,000을 넘지 않는다.
int arr[26] = { 0, }; //알파벳의 개수를 확인하기위한 배열 (0=a, 1=b, ... 25=z)
scanf("%s",str);
unsigned int size = strlen(str);
for(int i=0; i<size; i++){
if(str[i]<96){ //대문자
arr[str[i]-65]++;
}else if(str[i]>96){ //소문자
arr[str[i]-97]++;
}
}
int max=0; //알파벳 개수의 최대값 구하기
char c; //가장 많은 알파벳 저장하기위한 변수
//가장 많이 사용된 알파벳 찾기위한 반복문
for(int i=0; i<26; i++){
if(arr[i]!=0 && max<arr[i]){
max=arr[i];
c = i+65;
}
}
//max와 같은 개수로 사용된 알파벳이 있다면 c에 ? 저장
for(int i=0; i<26; i++){
if(arr[i]!=0 && max==arr[i] && i!=c-65){
c = '?';
break;
}
}
//결과 출력
printf("%c\n", c);
return 0;
}
Insight.
어제에 이어 오늘도 C언어 스터디 진도에 맞는 문제를 찾아서 풀어보았는데, 복습도 되고 좋은 것 같다.
그리고 JAVA보다 C언어로 풀었을 때, 방법 자체는 유사한데 실행 시간 차이가 엄청나서 신기했다.
그리고 자정 전에 커밋하려고 노력하고 있는데 잘 지켜지는 것 같아서 뿌듯하다 ✨✨
'Computer Science > 백준 알고리즘' 카테고리의 다른 글
[백준.1단계-JAVA] 입출력과 사칙연산 (0) | 2021.02.27 |
---|---|
[백준.11720-C언어] 숫자의 합 (0) | 2021.02.26 |
[백준.08958-C언어] OX퀴즈 (0) | 2021.02.24 |
[백준.11508-C언어] 2+1 세일 (0) | 2021.02.23 |
[백준.16435-C언어] 스네이크버드 (0) | 2021.02.23 |
댓글