BOJ
수학 1790 수 이어 쓰기2
문제
1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.
1234567891011121314151617181920212223…
이렇게 만들어진 새로운 수에서, 앞에서 k번째 자리 숫자가 어떤 숫자인지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 100,000,000)과, k(1 ≤ k ≤ 1,000,000,000)가 주어진다. N과 k 사이에는 공백이 하나 이상 있다.
예제 입력
풀이
자연수를 이어 쓴다면, 1~9, 10~99, 100~999, … 으로 구분할 수 있다. “자릿수”에 따라 이어지는 숫자의 위치가 달라진다. 그럼 N번째의 숫자가 무엇인지 알기 위해서는 1~9 자리인 9개의 숫자, 10~99 자리인 180개의 숫자(자릿수가 2개이기 때문에 90*2를 해준다.), 100~999 자리인 2700개의 숫자… 로 표현할 수 있다. 그렇기 때문에 반복문을 돌면서 N에 9를 빼주고, 180을 빼주고, 2700을 빼주고를 반복한다. 이후 더이상 뺄 수 없는 숫자라면, 예를들어 9를 뺄 수 있다면 N은 10부터 시작이다. 또한 9와 180 사이의 N에서 9를 빼면 10~99 에서 숫자가 나온다. 자릿수가 2이기 때문에 2씩 나눈다면, 해당 N번째 숫자가 무엇인지 확인 할 수 있다. 이후 한번더 자릿수로 나누어 정확한 N번째 숫자가 무엇인지 구할 수 있다.
댓글남기기