티스토리 뷰

PS/boj

boj)1748 - 수 이어쓰기 1

kingsubin 2020. 9. 22. 17:32
import java.io.*;

public class boj_1748 {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String[] args) throws IOException {
        String n = br.readLine();
        int N = Integer.parseInt(n);

        int ans = 0;
        for (int i = 1; i <= N; i++) {
            if (i < 10) {
                ans++;
            }
            if (10 <= i && i < 100) {
                ans += 2;
            }
            if (100 <= i && i < 1000) {
                ans += 3;
            }
            if (1000 <= i && i < 10000) {
                ans += 4;
            }
            if (10000 <= i && i < 100000) {
                ans += 5;
            }
            if (100000 <= i && i < 1000000) {
                ans += 6;
            }
            if (1000000 <= i && i < 10000000) {
                ans += 7;
            }
            if (10000000 <= i && i < 100000000) {
                ans += 8;
            }
            if (i == 100000000) ans += 9;
        }
        System.out.println(ans);
    }
}

(1)

 

import java.io.*;

public class boj_1748 {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String[] args) throws IOException {
        String n = br.readLine();
        int N = Integer.parseInt(n);

        int ans = 0;
        for (int start = 1, len = 1; start <= N; start*=10, len++) {
            int end = start * 10 - 1; // 그 자릿수의 마지막 수
            if (end > N) end = N;
            ans += (end-start+1) * len;
        }
        System.out.println(ans);
    }
}

(2)

 

 

생각

- 반복문 어떻게 해야할지 생각도 안나고 그냥 적어도 몇개 없어서 노가다로 품

- 밑의 풀이처럼 깔끔하게 반복문으로 풀 수 있음

 

 

풀이

- 그 수의 자릿수에 따라 ans에 + 되는 수가 다르고 그걸 구분해서 반복문에서 + 해줌

 

'PS > boj' 카테고리의 다른 글

boj)2493 - 탑  (0) 2020.10.12
boj)10773 - 제로  (0) 2020.10.12
boj)6064 - 카잉 달력  (0) 2020.09.22
boj)14500 - 테트로미노  (0) 2020.09.22
boj)1107 - 리모컨  (0) 2020.09.22