반응형
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public void solution() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
int result = 0;
int count = 1;
int num = 10;
for(int i = 1; i<=n; i++){
if(i%num==0){
count++;
num *=10;
}
result += count;
}
System.out.println(result);
}
public static void main(String args[]) throws IOException {
new Main().solution();
}
}
처음엔 그냥 문자열로 더하고 마지막에 문자열의 길이를 출력 했다. 그랬더니 메모리초과가 나와서 결국 String이 아닌
계산식으로 풀어야 한다라는 것을 깨달았다. 결국엔 자릿수만 더하면 되는 문제기 때문에 자릿수를 찾는 로직을 생각해야 했다. 만약에 숫자 10까지의 자릿수를 구한다고 하면
초기 값
자릿수 = 1;
자릿수판별수 = 10;
5까지 루프를 돌리고, i%자릿수판별수 (10) == 0 이 되면 num*10 과 자릿수를 ++; 해주고,
전부 결과 값에 자릿수를 더 해준다.
반응형
'개발 > 알고리즘' 카테고리의 다른 글
백준 1107번 : 리모컨 (0) | 2023.01.02 |
---|---|
백준 14500번 : 테트로미노 (0) | 2023.01.02 |
백준 1476번 : 날짜 계산 (0) | 2022.12.29 |
백준 3085번 : 사탕 게임 (0) | 2022.12.29 |
백준 2309번 : 일곱 난쟁이 (0) | 2022.12.28 |