기술 블로그

1019번 책 페이지 본문

알고리즘 문제/BOJ

1019번 책 페이지

parkit 2018. 12. 29. 16:28
728x90
반응형

https://www.acmicpc.net/problem/1019


https://www.slideshare.net/Baekjoon/baekjoon-online-judge-1019


꼭 다시 풀어봐야할 문제다.


브루트 포스 문제인데, 아이디어를 전혀 생각하지도 못 했다.


0과 9로 바꿔주는 것도 생각도 못 했다.



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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <cstring>
#include <string>
#include <math.h>
#include <algorithm>
#include <map>
 
using namespace std;
 
long long ans[10= { 0, };
 
void calc(long long n, long long p) 
{
    while (n > 0
    {
        ans[n % 10+= p;
 
        n /= 10;
    }
}
 
int main(void)
{
    long long Start = 1;
    long long End = 0;
    long long p = 1;
 
    scanf("%lld"&End);
 
    while (Start <= End)
    {
        // 처음 자리 0으로 만들기, 만들면서 미리 ans 배열에 더하기
        while (Start % 10 != 0 && Start <= End)
        {
            calc(Start, p);
            ++Start;
        }
        
        if (Start > End) break;
 
        // 끝 자리 9로 만들기, 만들면서 미리 ans 배열에 더하기
        while (End % 10 != 9 && Start <= End)
        {
            calc(End, p);
            --End;
        }
 
        long long cnt = (End / 10 - Start / 10 + 1);
 
        for (int i = 0; i <= 9; i++
        {
            ans[i] += cnt*p;
        }
 
        Start /= 10;
        End /= 10;
 
        p *= 10LL;
    }
 
    for (int i = 0; i <= 9; i++)
        printf("%d ", ans[i]);
 
    printf("\n");
 
    return 0;
}
cs


728x90
반응형

'알고리즘 문제 > BOJ' 카테고리의 다른 글

16724번 원영이는 ZOAC과 영원하고 싶다  (0) 2018.12.31
4179번 불!  (0) 2018.12.30
1120번 문자열  (0) 2018.12.29
10448번 유레카 이론  (0) 2018.12.29
7568번 덩치  (0) 2018.12.29