[BOJ] 1748 "수 이어쓰기" 문제 풀이 & 소스 코드 with C/C++

반응형
반응형

#INFO

난이도 : SIVLER3

문제출처 : https://www.acmicpc.net/problem/1748

 

1748번: 수 이어 쓰기 1

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

www.acmicpc.net


#SOLVE

무작정 for문을 돌리면 시간제한이 0.15초 이기에 시간초과가 발생한다.

그래서 자리수가 변경될 때 마다 자릿수를 늘리는 방식으로 풀이했다.

#include <iostream>
using namespace std;

int main(){
	int inputNum = 0;
	int ans = 0;
	cin >> inputNum;
	int length = 1, boundary = 1;
	
	for (int i = 1 ; i <= inputNum ; i++) {
		if (i == boundary * 10) {
			boundary *= 10;
			length++;
		}
		ans += length;
	}
	
	cout << ans << endl;
	return 0;
}

마지막 작성 : 2021-11-25

반응형

댓글

Designed by JB FACTORY