-
boj)1748 - 수 이어쓰기 1PS/boj 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