1748. 수 이어 쓰기 1

phoenixKim·2024년 11월 4일
0

백준 알고리즘

목록 보기
152/174

첫번째 풀이.

  • 그냥 string으로 처리함.
    -> 메모리 초과 발생


int main() 
{
	// string 에다가 붙이는 식으로 해야할듯 하다.
	int n;
	cin >> n;

	string s = "";

	for (int i = 1; i <= n; ++i)
	{
		s += to_string(i);
	}

	cout << s.size() << endl;
}

두번째 풀이

: 재귀 사용
-> 시간 초과 발생함.

int go(int num)
{
	if (num / 10 == 0)
	{
		return 1;
	}

	// 2135
	return go(num / 10) + 1;

}


int main() 
{
	// string 에다가 붙이는 식으로 해야할듯 하다.
	int n;
	cin >> n;

	// 그냥 자릿수의 카운트를 덧셈하는 방식으로 하자. 
	int res = 0;

	
	// 이걸로 하면 메모리 초과 발생한다. 
	for (int i = 1; i <= n; ++i)
	{
		res += go(i);
	}

	cout << res << endl;
}

결론

: 위의 2개 풀이로 일반적으로 탐색하면서 하기에는 적절치 않다.
특별하게 생각해서 접근해야 한다...

풀이 전략

: 우리가 알수 있는 거는
1 ~ 9 는 1자리수다.
10 ~ 99는 2자리수다.
100 ~ 999는 3자리수다.

라는 거를 당연히 알고 있다.

  • 이에 유념하면서 작성하면 된다.
profile
🔥🔥🔥

0개의 댓글

관련 채용 정보