2022.12.22 Baekjoon1157

조진호·2022년 12월 22일
0

https://www.acmicpc.net/problem/1157

코드 #1

#include <stdio.h>
 
int main(void) {
 
    int length = 0;
    int array[1000000] = {0};
    int count[1000000] = {0};
    int k = 0;
 
    do {
    	scanf("%d", &array[length]);
        length++;
    }while(array[length] != 0);
 
    while(k < length) {
        if(array[k] > 96) {
            array[k] -= 32;
        }
        k++;
    }
 
    for(int i=0; i<length; i++){
        for(int j=0; j<length; j++) {
            if(array[i] == array[j]) {
                count[i]++;
            }
        }
    }
 
    int max = 0;
    int maxcount = 1;
    for(int i=0; i<length; i++) {
        if(count[i] > max) {
            max = count[i];
            maxcount = 1;
        } else if(count[i] == max) {
            maxcount++;
        }
    }
 
    if(maxcount == 1) {
        for(int i=0; i<length; i++) {
            if(count[i] == max) {
                printf("%c", array[i]);
            }
        }
    } else {
        printf("?");
    }
}

코드 #2

#include <stdio.h>
 
int main(void) {
 
    int length = 0;
    char array[1000000];
    int alphabet[26] = {0};
    int k = 0;
    int result = 0;
 
	scanf("%s", array);
	
    while(array[length] != '\0') {
        length++;
    }
 
    while(k < length) {
        if(array[k] > 96) {
            array[k] -= 32;
        }
        k++;
    }
 
    for(int i=0; i<length; i++){
        for(int j=i; j<length; j++) {
            if(array[i] == array[j]) {
                alphabet[array[i] - 65]++;
            }
        }
    }
 
    int max = 0;
    int maxcount = 1;
    for(int i=0; i<26; i++) {
        if(alphabet[i] > max) {
            max = alphabet[i];
            maxcount = 1;
        } else if(alphabet[i] == max) {
            maxcount++;
        }
    }
 
    if(maxcount > 1) {
        printf("?");
    } else {
        for(int i=0; i<26; i++) {
            if(alphabet[i] == max) {
                printf("%c", i+65);
            }
        }
    }
}

틀린 이유: 시간 초과, 코드를 쫌 줄일 필요가 있는거 같다.

코드 #3

#include <stdio.h>
#include <string.h>
 
int main(void) {
 
    int length = 0;
    char array[1000000];
    int alphabet[26] = {0};
    int max = 0;
    char result = 0;
 
	scanf("%s", array);
	length = strlen(array);
 
    for(int i=0; i<length; i++){
        if(array[i] >= 'a') {
            alphabet[array[i] - 'a']++;
        } else {
            alphabet[array[i] - 'A']++;
        }
    }
 
    for(int i=0; i<26; i++) {
        if(alphabet[i] > max) {
            max = alphabet[i];
            result = 'A' + i;
        } else if(alphabet[i] == max) {
            result = '?';
        }
    }
 
    printf("%c", result);
}
profile
코린이

0개의 댓글

관련 채용 정보