No.13 가장 많이 사용된 자릿수
카테고리: Coding Test Lesson
태그: Coding Test Algorithm
인프런에 있는 김태원님의 강의 IT 취업을 위한 알고리즘 문제풀이 with C/C++ 를 듣고 문제를 푼 후 정리한 오답노트입니다. 😀
9. 가장 많이 사용된 자릿수
문제 설명
어떤 자연수가 입력되면 자릿수 중 가장 많이 사용된 숫자를 출력한다.
- 
    ex) 123056565625 가 입력되면 4번으로 가장 많이 사용된 5가 출력된다.
- 
    조건 - 자연수의 길이는 100을 넘지 않는다.
- 답이 여러개일 경우 그 중 가장 큰수를 출력.
 
해답
길이가 100인 자연수. 절대로 int, long 정수형으로 받을 수 없다.
- 자연수를 문자열로 받아야함.
    - 각 자릿수를 char로 다룸
 
- 각 자릿수를 
#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;
}
- a 배열: 입력 받을 자연수 (문자열)- 최대 길이 100이므로 크기 101의 배열로 선언
 
- ch 배열: 0 ~ 9 자릿수를 나타낼 배열. 따라서 크기는 10
- digit=a[i]-48- 48은 숫자 0의 아스키코드 값이다.
- 자릿수 문자를 숫자로 변환해 int인 digit에 저장.
- ch각 0 ~ 9 숫자 나온 횟수 저장
 
- if(ch[i]>=max)- >가 아닌- >=로 하면 max 값과 같기만 해도 최대 빈도로 나온 자릿수 i 를 저장하는- res가 갱신되므로 같은 max라도 가장 큰 i 를 출력하게 된다.- 조건 2 충족
 
 
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
 
      
    
댓글남기기