알고리즘

백준 1748 수 이어 쓰기 1

킨글 2024. 9. 17. 14:58

설명

  • plus 변수를 운영하면서 계속 몇자리를 더해줄지를 운영한다.
  • if(i%digits ==0) 을 통해 10, 100, 1000일 때에 자리수인 plus 값을 더해준다. 

코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {

    // 1748
    public static void main(String[] args) throws IOException {
        process();
    }

    // 1~9      : 1 * 1 * 9
    // 10~99    : 2 * 10 * 9
    // 100~999  : 3 * 100 * 9
    private static void process() 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 plus = 1;
        int digits = 10;
        int cnt = 0;
        for(int i = 1; i <= N; i++) {
            if(i % digits == 0) {
                plus += 1;
                digits *= 10;
            }
            cnt += plus;
        }
        bw.write(cnt + "");

        bw.flush();
        bw.close();
        br.close();
    }
}