[PS 백준 - 2.3] 2231번: 분해합

PongkiJoa·2021년 6월 29일
0

PS Diary - 백준

목록 보기
16/54
post-thumbnail

문제 정보

백준 2231번 - 바로가기

  • 난이도: 브론즈 2
  • 알고리즘: 브루트포스 알고리즘

코멘트

나의 원래 코드는 아래와 같았다.

for (int i = 1; i < n; i++) {
	sum = 0;
	sum += i;
	while (i > 0) {
		sum += (i % 10);
		i /= 10;
	}
	if (sum == n) { flag = i; break; }
}

왜 프로그램이 종료가 안될까...하고 정말 한참을 고민했다. 알고보니 무한 루프에 빠지게 된 것이 원인이였다.

i가 1 -> while문 내에서 i는 0으로 변함 -> i = 0 -> i = 0 -> ...

그래도 미리 이런 실수를 해서 면역이 됐다고 생각한다. 다음엔 이런 실수 하지 말자...


소스 코드

#include <iostream>

using namespace std;

int main() {
	cin.tie(NULL);
	cout.tie(NULL);
	std::ios::sync_with_stdio(false);

	int n, sum, temp;
	int flag = 0;

	cin >> n;

	for (int i = 1; i < n; i++) {
		temp = i;
		sum = 0;
		sum += temp;
		while (true) {
			sum += (temp % 10);
			if (temp > 10) {
				temp /= 10;
			}
			else break;
		}
		if (sum == n) { flag = i; break; }
	}

	cout << flag;
}

profile
컴공 20학번

0개의 댓글

관련 채용 정보