boj)1748 - 수 이어쓰기 1
2020. 9. 22. 17:32ㆍPS/boj
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 |