알고리즘/BOJ

[BOJ] 1748. 수 이어 쓰기 1

재담 2022. 3. 26. 23:30

문제 원본 : https://www.acmicpc.net/problem/1748

 

1748번: 수 이어 쓰기 1

첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다.

www.acmicpc.net

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int n = Integer.parseInt(br.readLine());

        int tmp = n;
        int ans = 0;
        int a = 1, b = 9;
        while (tmp >= 10) {
            ans += (a++) * b;
            b *= 10;
            tmp /= 10;
        }
        ans += (n - b / 9 + 1) * a;

        bw.write(String.valueOf(ans));

        bw.close();
        br.close();
    }
}
  • 단순 구현 문제
  • 자릿수가 커질 때마다 a * (9 * 10^(a - 1)) 만큼 늘어난다.
  • (n의 자릿수 - 1)만큼 반복하고, 남은 숫자를 계산해준다.
  • 예를 들어 n이 120이라면 99까지 반복문을 통해 구하고, 100 ~ 120까지는 반복문이 끝나고 더해준다.