https://www.acmicpc.net/problem/1748
이 문제는 노트에 좀 써보면 알고리즘을 찾기 쉬웠던 것 같다. N을 입력 받고 N의 자릿수를 구해준다. N의 자릿수를 l이라고 두고 풀었다.
N까지
한 자리 수: 9개 //1~9
두 자리 수: 90개 //10~99
세 자리 수: 900개 //100~999
...
l-1자리 수 : 9*(10^(l-2))개 //100...0~999..9
그리고 l 자리수는 N-(10^(l-1))+1개 있다.
import java.util.*;
public class Main {
public static void main(String[] args){
int N;
Scanner sc = new Scanner(System.in);
N=sc.nextInt();
int i, k, l;
int count=0;
int tmp = N;
for(l=0; tmp>0; tmp/=10)
l++;
k=1;
for(i=1; i<=l-1; i++) {
count+=k*i*9;
k*=10;
}
count+=i*(N-k+1);
System.out.println(count);
}
}
'프로그래밍 > 백준 문제풀이' 카테고리의 다른 글
백준 10972: 다음 순열(JAVA) (0) | 2022.10.12 |
---|---|
백준 9095번: 1, 2, 3 더하기 (0) | 2022.10.03 |
백준 2309: 일곱 난쟁이[JAVA] / 투포인터 (0) | 2022.10.03 |
C로 푼 문제들 (0) | 2022.09.07 |
백준 1978: 소수찾기(JAVA) (0) | 2022.08.20 |