-
[JAVA] 1748번: 수 이어 쓰기1Algorithm/백준 알고리즘 2021. 7. 20. 11:39
문제 설명
- 1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.
- 이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.
1234567891011121314151617181920212223... 입력
- 첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다.
출력
- 첫째 줄에 새로운 수의 자릿수를 출력한다.
풀이
1. length변수를 선언하여 i가 length와 일치할 경우 length * 10을 해준다. => 2자릿수, 3자릿수..
2. 자릿수가 증가함에 따라 자릿수당 해당 숫자가 위치해야함으로 cnt를 1증가 시켜준다.
3. 해당 자리만큼 temp에 cnt를 더해준다.코드
/* <수 이어 쓰기1> - 1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다. - 1234567891011121314... <문제 해결> - 1 ~ 9까지 해당 자리가 곧 숫자위치 - 10 ~ 99까지 2자리당 한 숫자위치 - 100 ~ 999까지 3자리당 한 숫자위치 - 1000 ~ 9999까지 4자리당 한 숫자위치 ... 다시 1이 오는경우 자리수를 증가시켜 체크한다. */ import java.util.*; class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); int number = sc.nextInt(); int cnt = 1; //자릿수를 count하기 위해 정의한 변수 int temp = 0; //새로운 수의 자릿수 int length = 10; //자리수를 증가하기 위해 설정 for(int i = 1; i <= number; i++){ if(i == length){ cnt++; length = length * 10; } temp += cnt; //한자리수의 경우 1씩, 두자리수의 경우 2씩... } System.out.println(temp); } }
'Algorithm > 백준 알고리즘' 카테고리의 다른 글
[JAVA] 3085번: 사탕 게임 (0) 2021.07.19 [JAVA] 2309번: 일곱 난쟁이 (0) 2021.07.19 [JAVA] 1929번: 소수 구하기 (0) 2021.07.18 [JAVA] 17427번: 약수의 합2 (0) 2021.07.18 [JAVA] 1935번: 후위 표기식2 (0) 2021.07.12