본문 바로가기

[BAEKJOON] 1475번



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