[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

💻 CS/알고리즘 연습

[알고리즘 연습] 가장 많이 사용된 자릿수 (by C++)

inu 2020. 3. 13. 19:10
반응형

가장 많이 사용된 자릿수

  • 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을 빼준다.

반응형