https://www.acmicpc.net/problem/2154
1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.
1234567891011121314151617181920212223...
이렇게 만들어진 새로운 수에서 N이 등장하는 위치를 알고 싶다. 물론 1부터 N까지의 수를 이어 쓰는 것이므로 수의 가장 끝부분에서 N이 항상 등장하게 되지만, 그보다 일찍 등장하는 경우도 있다.
예를 들어 N=151인 경우, 다음과 같이 앞에서 20번째 숫자부터 151이 등장하게 된다.
1234567891011121314151617181920212223...
N이 주어졌을 때, N이 가장 먼저 등장하는 위치를 알아내는 프로그램을 작성하시오.
첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다.
첫째 줄에 N이 가장 먼저 등장하는 위치를 출력한다. 앞에서부터 몇 번째인지를 출력하면 된다.
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
var n int
var read = bufio.NewReader(os.Stdin)
fmt.Fscanln(read, &n)
fmt.Println(strings.Index(getTotalNumberString(n), strconv.Itoa(n)) + 1)
}
func getTotalNumberString(n int) string {
var result strings.Builder
for i := 1; i <= n; i++ {
d := strconv.Itoa(i)
result.WriteString(d)
}
return result.String()
}
[Codility] ParkingBill (Go) (0) | 2023.01.03 |
---|---|
[Codility] BinaryGap (Go) (0) | 2023.01.02 |
[백준] 2804번 크로스워드 만들기 (Go) (0) | 2022.12.28 |
[백준] 3028번 창영마을 (Go) (0) | 2022.12.27 |
[백준] 1969번 DNA (Go) (0) | 2022.12.26 |
댓글 영역