Notice
Recent Posts
Recent Comments
Link
제이슨의 개발이야기
백준 1748번 수 이어쓰기1. 코틀린 본문
728x90
반응형
https://www.acmicpc.net/problem/1748
안녕하세요!
백준에서 실버 3 문제인 수 이어 쓰기1 문제를 풀어봤습니다!
문제
1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.
1234567891011121314151617181920212223...
이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다.
출력
첫째 줄에 새로운 수의 자릿수를 출력한다.
예제 입력 1 복사
5
예제 출력 1 복사
5
이 문제는 그냥 단순히 반복문을 통해서 문자열을 붙어나가면 메모리 초과 가 뜹니다!
예를 들면 12345678910111213... 이런식으로
그래서 단순히 반복문을 통해서 문자열 붙이기 는 하면 안되고
단 붙이는 숫자의 길이만큼 더하면 문제를 해결할 수 있습니다!
즉
1~9 는 한자리 이므로 1씩 더하고
10~99 는 두자리 이므로 2씩더하면 됩니다!
그리고 10으로 나눴을때 나머지가 0이면 10이므로 그때 1이 아니라 2로 바꾼 후 더하는 방식으로 문제 접근하면 됩니다!
이 방법을 생각하면 생각보다 쉽게 문제를 풀 수 있습니다!
fun main(){
var num = readLine()!!.toInt()
var plus = 1
var sum = 0
var divider = 10
for(i in 1..num){
if(i%divider==0){
divider *=10
plus++
}
sum+=plus
}
println(sum)
}
728x90
반응형
'코딩테스트' 카테고리의 다른 글
프로그래머스 예상 대진표 JAVA 2017 팁스타운 (0) | 2021.10.26 |
---|---|
백준 17204번 죽음의 게임 코틀린 (0) | 2021.10.18 |
백준 1012번 유기농 배추 BFS/DFS 코틀린 (0) | 2021.10.17 |
백준 2667 단지번호 붙이기 코틀린 (0) | 2021.10.16 |
백준 2606번 바이러스 코틀린 (2) | 2021.10.15 |