2154번: 수 이어 쓰기 3백준/문제2024. 4. 19. 13:47
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/2154
언어 : Kotlin
문제 설명 :
1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.
1234567891011121314151617181920212223...
이렇게 만들어진 새로운 수에서 N이 등장하는 위치를 알고 싶다. 물론 1부터 N까지의 수를 이어 쓰는 것이므로 수의 가장 끝부분에서 N이 항상 등장하게 되지만, 그보다 일찍 등장하는 경우도 있다.
예를 들어 N=151인 경우, 다음과 같이 앞에서 20번째 숫자부터 151이 등장하게 된다.
1234567891011121314151617181920212223...
N이 주어졌을 때, N이 가장 먼저 등장하는 위치를 알아내는 프로그램을 작성하시오.
입력 :
첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다.
출력 :
첫째 줄에 N이 가장 먼저 등장하는 위치를 출력한다. 앞에서부터 몇 번째인지를 출력하면 된다.
제한 사항 :
- 시간 제한 : 2초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
15 | 20 |
34 | 3 |
142 | 73 |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
readLine().toInt().let { n ->
bw.write("${(1 .. n).map { it }.joinToString("").indexOf("$n") + 1}")
}
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
9248번: Suffix Array (0) | 2024.04.22 |
---|---|
1544번: 사이클 단어 (0) | 2024.04.19 |
11585번: 속타는 저녁 메뉴 (0) | 2024.04.19 |
3033번: 가장 긴 문자열 (1) | 2024.04.18 |
14426번: 접두사 찾기 (1) | 2024.04.18 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!