13번 문제   

 

 

    내가 풀이한 답   

 

  문제를 보자마자 배열의 0~9 index를 이용해 값을 저장하고 최대값을 찾으려고 하였다. 주어진 입력 조건에 자연수의 길이는 100을 넘지 않는다고 되어 있는데 최대가 99이므로 long long 타입으로도 받을 수 없었다. char형 배열을 이용해서 각각을 정수로 바꿔주는 방법을 시도하였다. 

#include <stdio.h>
using namespace std;

char array[101];
int digit[11];
int main(int argc, char** argv) {
	//freopen("input.txt", "rt", stdin);	
	
	int i, temp, max, index;
	scanf("%s", &array);
	
	for(i=0; array[i]!='\0'; i++){
		temp = array[i] - '0';
		digit[temp]++;
	}
	
	for(i=0; i<10; i++){
		if(digit[i]>=max) {
			max = digit[i];
			index = i;
		}
	}
	
	printf("%d", index);

	return 0;
}

 

그 결과 통과를 했다.

 

 


    사이트의 답안   

#include<stdio.h>
int ch[10];
int main(){
	//freopen("input.txt", "rt", stdin);
	int i, digit, max=-2147000000, res;
	char a[101];
	scanf("%s", &a);
	for(i=0; a[i]!='\0'; i++){
		digit=a[i]-48;
		ch[digit]++;
	}
	for(i=0; i<=9; i++){
		if(ch[i]>=max){
			max=ch[i];
			res=i;
		}
	}
	printf("%d\n", res);
	return 0;
}

 

  사이트의 답안과 내 코드는 논리적으로 똑같았다.

'알고리즘 & 자료구조 > 기초 다잡기' 카테고리의 다른 글

15. 소수의 개수  (0) 2020.09.06
14. 가장 많이 사용된 자릿수  (0) 2020.09.06
12. 숫자의 총 개수(large)  (0) 2020.09.03
11. 숫자의 총 개수(small)  (0) 2020.09.03
10. 자릿수의 합  (0) 2020.09.03