단어공부
#include <stdio.h>
#include <string.h>
int main(){
char str[1000000];
int arr[26]={0,},max=0;
scanf("%s",str);
for(int i=0; i<strlen(str); i++){
if(str[i]>='a') str[i] -=32;
arr[str[i]-'A']++; // 수 저장
}
for(int i=1; i<26; i++){
if(arr[max]>0 && arr[max]==arr[i]) {
max = -2; //63 ='?'
break;
}
else if(max<arr[i]) max=i;
}
printf("%c\n",max+65);
return 0;
}
잘돌아가는데 백준은 참 까다롭다.. 시간초과가 계속나옴.
아무래도 max찾는 부분이 이상한것같아서 고치는데 또 시간초과.
순서대로 고쳐보다가 마지막에 첫번째 for문의 strlen을 고쳤더니 드디어 돌아감 ㅠ
#include <stdio.h>
int main(){
char str[1000000];
int arr[26]={0,},max=0;
scanf("%s",str);
for(int i=0; str[i]!='\0'; ++i){ // strlen썼는데 코드에 계속 시간초과나서 이걸로 바꾸니까 드디어 됨 ㅠ
if(str[i]>='a') str[i] -=32; //소문자를 대문자로 바꿔줌
arr[str[i]-'A']++; // 인덱스 0인 'A'부터 인덱스 25인 'Z' 까지 갯수를 세줌
}
for(int i=1; i<26; ++i){ //max인덱스 찾기
if(arr[max]<arr[i]) max=i;
}
int flag =0;
for(int i=max+1; i<26; ++i){ //개수가 같은 문자가 있는지 검열
if(arr[max] == arr[i]) {
flag =1;
break;
}
}
if (flag==1) printf("?\n"); //찾았으면 ?출력
else printf("%c\n",max+65); //인덱스+60해줘서 다시 아스키코드의 알파벳 대문자로 출력되도록
return 0;
}
'PROGRAMMING CODE > C' 카테고리의 다른 글
[BAEKJOON] No.2908 C언어 (0) | 2021.10.18 |
---|---|
[BAEKJOON] No.1152 C언어 (0) | 2021.10.18 |
[BAEKJOON] No.2675 C언어 (0) | 2021.10.18 |
[BAEKJOON] No.10809 C언어 (0) | 2021.10.18 |
[BAEKJOON] No.11720 C언어 (0) | 2021.10.18 |