๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ฅ PS(Problem Solving) ๐Ÿ”ฅ/BOJ

[BOJ] #1748 ์ˆ˜ ์ด์–ด ์“ฐ๊ธฐ 1

by dar0m! 2020. 4. 23.
์‹œ๊ฐ„ ์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์ •๋‹ต ๋น„์œจ
 1์ดˆ  128MB 56.357%
 

1748๋ฒˆ: ์ˆ˜ ์ด์–ด ์“ฐ๊ธฐ 1

์ฒซ์งธ ์ค„์— N(1≤N≤100,000,000)์ด ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net

 

๋ฌธ์ œ

1๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ์ˆ˜๋ฅผ ์ด์–ด์„œ ์“ฐ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒˆ๋กœ์šด ํ•˜๋‚˜์˜ ์ˆ˜๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
1234567891011121314151617181920212223...
์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ์ƒˆ๋กœ์šด ์ˆ˜๋Š” ๋ช‡ ์ž๋ฆฌ ์ˆ˜์ผ๊นŒ? ์ด ์ˆ˜์˜ ์ž๋ฆฟ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ฒซ์งธ ์ค„์— N(1≤N≤100,000,000)์ด ์ฃผ์–ด์ง„๋‹ค.

ํ•ด๊ฒฐ

1~n๊นŒ์ง€ ์ž๋ฆฌ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ans์— ์ผ์ผ์ด ๋”ํ•ด์ฃผ์—ˆ๋‹ค.

 

์ฝ”๋“œ

๋ฉ”๋ชจ๋ฆฌ ์‹œ๊ฐ„
 1984KB  232ms
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
#include <iostream>
#include <vector>
using namespace std;
typedef long long int ll;
int n;
ll ans;
int main() {
    scanf("%d"&n);
 
    for (int i = 1; i <= n; i++) {
        if (i < 10) ans++;
        else if (i < 100 && i >= 10) ans += 2;
        else if (i < 1000 && i >= 100) ans += 3;
        else if (i < 10000 && i >= 1000) ans += 4;
        else if (i < 100000 && i >= 10000) ans += 5;
        else if (i < 1000000 && i >= 100000) ans += 6;
        else if (i < 10000000 && i >= 1000000) ans += 7;
        else if (i < 100000000 && i >= 10000000) ans += 8;
        else if (i < 1000000000 && i >= 100000000) ans += 9;
    }
 
    printf("%lld", ans);
 
    return 0;
}
cs

 

 

๋” ์ข‹์€ ๋ฐฉ๋ฒ•

์ถœ์ฒ˜: https://www.acmicpc.net/board/view/23735

1 ๋ถ€ํ„ฐ n ๊นŒ์ง€์˜ ๋ชจ๋“  ์ž์—ฐ์ˆ˜๊ฐ€ ๊ทธ๋ƒฅ ๋ชจ์—ฌ์žˆ๋‹ค๊ณ  ํ•ด๋ด…์‹œ๋‹ค.

1์˜์ž๋ฆฌ์ˆ˜๊ฐ€ ์กด์žฌํ•˜๋Š” ์ˆ˜๋Š” n๊ฐœ๊ฐ€ ์žˆ๊ฒ ์ฃ ? ๊ทธ๋Ÿผ 10์˜์ž๋ฆฌ์ˆ˜๊ฐ€ ์กด์žฌํ•˜๋Š” ์ˆ˜๋Š” ๋ช‡๊ฐœ๊ฐ€ ์žˆ์„๊นŒ์š”? 10๋ถ€ํ„ฐ n๊นŒ์ง€๊ฒ ์ฃ ? ๊ฐœ์ˆ˜๋Š” n - 10 + 1 ๊ฐœ๊ฐ€ ๋ ๊ฑฐ๊ณ ์š”.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 100์˜์ž๋ฆฌ์ˆ˜๊ฐ€ ์กด์žฌํ•˜๋Š” ์ˆ˜๋Š” n - 100 + 1 ๊ฐœ๊ฐ€ ์žˆ๊ณ ์š”. ์ด๋Ÿฐ ์‹์œผ๋กœ ์ƒ๊ฐํ•ด์„œ ์ฃฝ ๋”ํ•ด๋‚˜๊ฐ„๊ฒƒ์ž…๋‹ˆ๋‹ค

๋ฉ”๋ชจ๋ฆฌ ์‹œ๊ฐ„
 1112KB  0ms
1
2
3
4
5
6
7
8
9
#include<cstdio>
int n, r;
int main() {
    scanf("%d"&n);
    for (int i = 1; i <= n; i *= 10)
        r += n - i + 1;
    printf("%d", r);
    return 0;
}
cs

'๐Ÿ”ฅ PS(Problem Solving) ๐Ÿ”ฅ > BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ] #2512 ์˜ˆ์‚ฐ  (0) 2020.05.11
[BOJ] #13414 ์ˆ˜๊ฐ•์‹ ์ฒญ  (0) 2020.05.02
[BOJ] #1953 ํŒ€๋ฐฐ๋ถ„  (0) 2020.04.21
[BOJ] #1068 ํŠธ๋ฆฌ  (1) 2020.04.17
[BOJ] #2941 ํฌ๋กœ์•„ํ‹ฐ์•„ ์•ŒํŒŒ๋ฒณ  (0) 2020.04.16

๋Œ“๊ธ€