상세 컨텐츠

본문 제목

[백준] 2154번 수 이어 쓰기 3 (Go)

Development/Algorithm

by thisisnew 2022. 12. 30. 17:02

본문

반응형

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

 

2154번: 수 이어 쓰기 3

첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다.

www.acmicpc.net

 

문제

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()
}

반응형

'Development > Algorithm' 카테고리의 다른 글

[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

관련글 더보기

댓글 영역