개발자/C or C++

[백준] 4673번

Mosser 2021. 10. 1.
728x90
반응형

문제

해결 방법

이 문제 같은경우에는 저 같은경우에는 먼저 배열에 1~10000까지의 숫자를 집어 넣은 후, 여기서 생성자를 이용하여 나온 숫자들의 값을 -1로 변경 후, 나중에 -1인 값들은 제외하고 출력하도록 풀었습니다.

처음에는 많이 헤맸는데 문제에 집중하고, 반복문 탈출 조건등을 생각해보면서 풀어보니 그렇게 어렵지 않았습니다.

배열의 인덱스는 헷갈리지 않게 배열의 크기를 10001개를 선언하여 인덱스를 1부터 시작하도록하였습니다.

이해가 어려우신 분들은 손으로 배열을 한번 그려보신 후, 따라해보신다면 어렵지 않으실 겁니다.

소스코드

 

#include <stdio.h>
#include <vector>
using namespace std;
int Constructor(int num){
	int sum=0;
	sum+=num;
	while(num!=0){
		sum+=num%10;
		num/=10;
	}
	return sum;

}
int main(){
	vector<int> arr(10001);
	int i=0;
	
	for(i=1;i<=10000;i++){
		arr[i]=i;
	}
	
	int num=1;
	
	while(num<=10000){
		int constructor=Constructor(num);
		num++;
		if(constructor>10000)
			continue;
		arr[constructor]=-1;

	}
	
	for(i=1;i<=10000;i++){
		if(arr[i]==-1)
			continue;
		printf("%d\n",i);
	}
	
	return 0;
	
}

실행결과

 

반응형

'개발자 > C or C++' 카테고리의 다른 글

[백준] 8958번  (0) 2021.10.01
[백준] 2577번  (0) 2021.10.01
[백준] 1065번  (0) 2021.10.01
[백준] 4344번  (0) 2021.10.01
[백준] 1546번  (0) 2021.10.01

댓글