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 자릿수를 나타낼 배열. 따라서 크기는 10digit=a[i]-48
- 48은 숫자 0의 아스키코드 값이다.
- 자릿수 문자를 숫자로 변환해 int인 digit에 저장.
ch
각 0 ~ 9 숫자 나온 횟수 저장
if(ch[i]>=max)
>
가 아닌>=
로 하면 max 값과 같기만 해도 최대 빈도로 나온 자릿수 i 를 저장하는res
가 갱신되므로 같은 max라도 가장 큰 i 를 출력하게 된다.- 조건 2 충족
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글남기기