프로그래밍/알고리즘

BOJ 1748 · 수 이어 쓰기 1

반응형


알고리즘 분류 : 구현  


입력으로 N이 주어질 때, 1부터 N까지 수를 이어 붙여서 나온 수의 길이를 구하는 문제다.


  • 자릿수로 나눠서 생각하면 구현이 쉽다.
  • N이 주어졌을 때, 1의 자리가 있는 수는 1부터 N까지이다. 따라서 1의 자리가 있는 수는 (N-1+1)이다.
  • 10의 자리가 있는 수는 10부터 N까지이다. 이를 구하면, (N-10+1) 이다.
  • 100의 자리가 있는 수는 100부터 N까지이다. 이를 구하면, (N-100+1) 이다.
  • 위의 과정을 N의 자릿수 만큼 반복한다.




C++ 소스코드


#include <cstdio>

int main() {
    int n;
    scanf("%d", &n);
    int ans = 0, i = 1;
    while (i <= n) {
        ans += (n-i+1);
        i *= 10;
    }
    printf("%d\n", ans);
    return 0;
}




Python 3 소스코드


n = int(input())
ans, i = 0, 1
while i <= n:
    ans += (n-i+1)
    i *= 10
print(ans)




참고



반응형