반응형
가장 많이 사용된 자릿수
- N자리의 자연수가 입력되면 해당 자연수에서 가장 많이 사용된 자릿수를 출력한다.
- 답이 여러개일 경우 가장 큰 수를 출력한다.
- 예를 들어 1230565625라는 자연수가 입력되면 5가 3번 사용되어 가장 많이 사용된 자릿수이므로 5가 출력된다.
풀이
#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", res);
return 0;
}
- 문제 자체는 매우 쉽다. 하지만 좋은 방법을 떠올리다 시간을 허비헀다.
- 문제조건에 위배되지만 않는다면 단순한 전략도 좋으니 문제를 해결하는데에 집중하자.
- 자연수의 크기가 매우 커질경우 int나 long으로 받기 어려울 수 있으므로 문자열에 자연수를 받는다.
- 숫자의 아스키넘버를 원래값으로 돌리려면 48을 빼준다.
반응형
'💻 CS > 알고리즘 연습' 카테고리의 다른 글
[알고리즘 연습] 소수의 개수 (by C++) (0) | 2020.03.13 |
---|---|
[알고리즘 연습] 뒤집은 숫자의 소수 여부 판단 (by C++) (0) | 2020.03.13 |
[알고리즘 연습] 숫자의 총 개수 (by C++) (0) | 2020.03.13 |
[알고리즘 연습] 자릿수의 합 비교하기 (by C++) (0) | 2020.03.12 |
[알고리즘 연습] N까지의 약수 갯수 모두 구하기 (by C++) (0) | 2020.03.12 |