1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include <stdio.h> int run(); int main() { return run(); } int run() { int n; int temp; int i; int max = 0; int arr[9] = { 0 }; scanf("%d", &n); do { temp = n % 10; n /= 10; if (temp == 9) { ++(arr[6]); } else { ++(arr[temp]); } } while (n); arr[6] = (arr[6] / 2) + (arr[6] % 2); for (i = 0; i < 9; ++i) { if (max < arr[i]) { max = arr[i]; } } printf("%d\n", max); return 0; } | cs |
arr 의 인덱스는 입력된 숫자의 자릿수고 실제 저장되는 값은 그 숫자가 나온 횟수다.
예를 들어 5가 3번 나왔다면 arr[5] 의 값은 3이다.
이 때 6과 9는 arr[6] 에서 한 번에 센다.
6이 3번, 9가 4번 나왔다면 횟수는 4로 측정해야 한다.
6이 2번, 9가 4번 나왔다면 횟수는 3으로 측정해야 한다.
즉 arr[6] = arr[6]/2 + arr[6]%2 다.
그 다음 배열을 쭉 훑으면서 최대값을 탐색한다.
'Programming > Solutions' 카테고리의 다른 글
[Project Euler] Problem 020 (0) | 2019.05.13 |
---|---|
[BAEKJOON] 1929번 (0) | 2019.05.08 |
[Project Euler] Problem 019 (0) | 2019.05.04 |
[Project Euler] Problem 018 (0) | 2019.05.04 |
[BAEKJOON] 2581번 (0) | 2019.05.04 |