반응형
https://www.acmicpc.net/problem/1748
문제 접근 방법
- 새로운 수의 자릿수 = 1부터 N까지의 전체 자릿수를 더한것과 같다.
- 1부터 N까지 1의자리 갯수 + 10의자리 갯수 + 100의 자리 갯수 + ... + 10의 n승 자리 갯수들을 더한다.
아래는 코드입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include <iostream>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
int N, ans = 0 ,count = 1; // 자릿수 체크를 위한 count
cin >> N;
while (count <= N)
{
ans += (N - count + 1); // N이 1부터 N 까지 1의 자리수의 갯수는 N-1+1 ex) 123 의 1의자리 갯수는 123개
count *= 10; // N이 1부터 N 까지의 10의 자리의 갯수는 N -10 + 1 ex) 123 의 10의자리 갯수는 114개 (10~99) 90개 + (100~123) 24개
} // 점화식은 N-(10의n승) + 1 n은 0부터 시작
cout << ans << endl;
return 0;
}
Colored by Color Scripter
|
반응형
'백준 문제풀이 > SILVER' 카테고리의 다른 글
[백준 / BOJ / SILVER 3] 9095 번 : 1, 2, 3 더하기 (0) | 2020.03.06 |
---|---|
[백준 / BOJ / SILVER 5] 1476 번 : 날짜 계산 (0) | 2020.03.04 |
[백준 / BOJ / SILVER 1] 11048 번 : 이동하기 (0) | 2020.02.29 |
[백준 / BOJ / SILVER 1] 6064 번 : 카잉 달력 (0) | 2020.02.28 |
[백준 / BOJ / SILVER 2] 1890 번 : 점프 (0) | 2020.02.28 |