1. 시간 1초

2. 만약 반복문을 1억번 돌리면 아슬아슬할 수 있다.

3. 각 숫자를 문자열로 변경해도 시간초과가 나지 않을까 하면서 구현하고 제출하니까 성공

4. i 는 이어붙일 숫자 N 은 몇 번째 숫자를 구할지 입력받고, i 를 문자열로 변환한거의 길이만큼 계속 빼준다.

import java.util.*;
import java.io.*;
/**
* https://www.acmicpc.net/problem/12755
* BOJ 백준온라인져지 12755 수면 장애 풀이
*/
public class Main {
private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main (String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int i = 0;
while (N > 0) {
i++;
String str = String.valueOf(i);
N -= str.length();
if (N <= 0) {
bw.write(str.charAt(str.length() - 1 + N));
}
}
bw.flush();
}
}
view raw Main.java hosted with ❤ by GitHub

문제

수면 장애를 가진 강민이는 잠이 오지 않아 적잖은 고통을 느끼고 있다. 강민이는 잠이 오지 않을 때마다 속으로 양을 세고 있었는데, 오늘따라 백만 마리까지 세었는데도 잠이 오지 않았다.

한계를 느낀 강민이는 새로운 방법으로 수를 세기로 했다.

1부터 숫자를 쭉 이어 붙이면 다음과 같은 숫자열이 생성된다.

12345678910111213...

강민이는 이 숫자열을 한 숫자씩 떼어서 읽기 시작했다. 수면에 성공한 강민이는 다음날 일어나자마자 "N번째 숫자까지 읽었어!" 라고 기분 좋게 외쳤다.

과연 N번째 숫자는 무엇일까?

입력

첫째 줄에 N번째 숫자를 나타내는 N이 주어진다. (1N100,000,000)

출력

첫째 줄에 N번째 숫자에 해당하는 0~9 중 한 숫자를 출력하시오.


+ Recent posts