더 많이 실패하기

공부 151일차: 백준 1748번 수 이어 쓰기 1 자바 java 본문

알고리즘/백준

공부 151일차: 백준 1748번 수 이어 쓰기 1 자바 java

김발자~ 2022. 12. 28. 23:02
반응형

1748 수 이어 쓰기 1

https://www.acmicpc.net/problem/1748

 

1748번: 수 이어 쓰기 1

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

www.acmicpc.net

 

 

 


백준 1748번 문제 수 이어 쓰기 1


문제


 

 

 

 


과정 생각해보기


 

브루트포스 문제라서 그냥 무식하게 생각하기로 했다

1~9면 1을 더하고

10~99면 2를 더하고

...

100,000,000이면 9를 더하는 식이다

 

 

 


정답 인정 코드


 
1)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.io.*;
 
public class Main {
 
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        int n = Integer.parseInt(br.readLine());
        
        int count = 0;
        for(int i = 1; i <= n; i++) {
            if(i < 10) {
                count++;
            }else if(i < 100) {
                count += 2;
            }else if(i < 1_000) {
                count += 3;
            }else if(i < 10_000) {
                count += 4;
            }else if(i < 100_000) {
                count += 5;
            }else if(i < 1_000_000) {
                count += 6;
            }else if(i < 10_000_000) {
                count += 7;
            }else if(i < 100_000_000) {
                count += 8;
            } else {    //if(i == 100_000_000) {
                count += 9;
            }
        }
        
        System.out.println(count);
 
    }
 
}
 
cs

 

https://zzang9ha.tistory.com/154

이 블로그 참고

2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.io.*;
 
public class Main {
 
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        int n = Integer.parseInt(br.readLine());
        
        int count = 0;
        int cipher = 1;    // 자릿수 ( 1~10: 1, 11~100: 2, ...
        int standard = 10;
        for(int i = 1; i <= n; i++) {
            if(i % standard == 0) {
                cipher++;    // 기준으로 나누어 떨어진다 -> 자릿수가 바뀌었다 -> 자릿수 +1
                standard *= 10// 10, 100, 1000 ... 으로 기준을 늘린다(자릿수 바뀌는 수가 기준)
            }
            count += cipher;
        }
        
        System.out.println(count);
 
    }
 
}
// 과정 https://gimbalja.tistory.com/289
cs

 

깔끔한 코드...

 

 

 


정답률이 높은 만큼 쉬운 문제

반응형
Comments