반응형

12755번 수면 장애

https://www.acmicpc.net/problem/12755

 

12755번: 수면 장애

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

www.acmicpc.net


Comment
진짜 처음엔 별거 없을거라 생각했는데 생각보다 난이도가 높았던 문제
좀 애먹으면서 문제를 풀었던 것 같다. 메모리 제한이 생각보다 너무 컸고, 정답숫자 위치에서 인덱스 범위 잡는 것에 대한 고민...


hint
for문의 범위는 상관없고 번호와 길이를 따로 저장해서 확인하면 좀 편하다.


Solution
temp 인트를 선언해서 길이를 계속 저장해준다! 길이 저장 후 length가 n과 같거나 커졌을 때 for문을 탈출, 해당 i의 값이 n의 범위에 걸친 i이고, for문의 증강연산으로 인해 i-1이 정답번호이다. 여기서 값 추출은 length-n을 통해 0 ~ i.length()-1 까지 위치를 잡아서 출력하는데, 인덱스를 통해 출력하기 때문에 StringBuilder를 만들어서 reverse메서드로 먼저 뒤집어줬다.

솔직히 깔끔하지는 못한 코드지만 그래도 어떻게든 해결했단 것에 만족..!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.io.*;
public class p12755 {
    public static void main(String[] args) throws IOException{
        BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
 
        int n = Integer.parseInt(br.readLine());
        int length = 0;
        int i = 1;
        for(i = 1length < n; i++){
            //10을 하려면 어떻게 하는데?
            //10일 때 1카운트 0 카운트
            length++;
 
            int temp = i;
            while(temp >= 10){
                length++;
                temp /= 10;
            }
        }
        StringBuilder sb = new StringBuilder();
        sb.append(i-1);
        sb.reverse();
        System.out.println(sb.charAt(length-n));
    }
}
cs
반응형

+ Recent posts