P.1748 수 이어 쓰기 1

castlehi·2022년 2월 26일
0

CodingTest

목록 보기
16/67
post-thumbnail

1748 수 이어 쓰기 1

시간 제한메모리 제한제출정답맞힌 사람정답 비율
0.15 초 128 MB161997448622550.044%

문제

1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.

1234567891011121314151617181920212223...

이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.

입력

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

출력

첫째 줄에 새로운 수의 자릿수를 출력한다.

예제 입력 1

5

예제 출력 1

5

예제 입력 2

15

예제 출력 2

21

예제 입력 3

120

예제 출력 3

252

코드

import java.io.*;

public class P_1748 {
    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 sep = 9;
        int ans = 0;
        int digit = 1;
        while (sep <= n) {
            ans += (digit * sep);
            n -= sep;
            sep *= 10;
            digit++;
        }
        if (sep - n > 0) ans += (digit * n);

        bw.write(Integer.toString(ans));
        bw.flush();
    }
}

코드 설명

자릿수의 개수가 바뀌는 단위는 9, 90, 900, ...이다.
자릿수가 1일 땐 1 ~ 9로 9개,
자릿수가 2일 땐 10 ~ 99로 90개,
자릿수가 3일 땐 100 ~ 999로 900개
.
.
.

따라서 자릿수를 나눠주는 변수인 sep으로 구분해서 자릿수를 늘려가며 ans를 구해주면 된다.

profile
Back-end Developer

0개의 댓글

관련 채용 정보