• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

10번 자릿수의 합에서 질문이 있습니다.

21.08.09 14:58 작성 조회수 130

0

main 코드는 정답에 있는 그대로 작성하고 digit_sum만 제가 작성한것으로 돌렸는데 에러는 발생하지 않지만 실행이 안됩니다(print가 아예 안됩니다ㅠ)

int digit_sum(int x){
	int n, sum=0;
	for(;x>10;x/10){
		n = x%10;	
		sum += n;
	}
	sum += x%10;
	
	return sum;
}

어떤것에 문제가 생긴건가요? 

제가 의심되는 부분은 for문 (;;) 안에서 변화식을 x/10으로 작성한 부분이 걸립니다. 구글링으로 본 다른 코드에서는 for문에서 선언한 변수를 제어하는 부분이라고 i++과 비슷한 형태로만 작성되었더군요. 저는 단순히 for(반복문 돌리기전 초기 실행 ; 조건식 ; 1회 반복 후 실행) 으로 생각하고 작성했는데 혹시 for(;;)에서 작성할때 유의사항이 있나요?

다음은 전체 코드입니다.

#include <iostream>
using namespace std;

int digit_sum(int);
	
int main(){
	freopen("input.txt", "rt", stdin);
	int n, num, i, sum, max=-2147000000, res;
	scanf("%d", &n);

	for(i=0; i<n; i++){
		scanf("%d", &num);
		sum=digit_sum(num);
		if(sum>max){
			max=sum;
			res=num;
		}
		else if(sum==max){
			if(num>res) res=num;
		}
	}
	printf("%d\n",res);
	
	return 0;
}


int digit_sum(int x){
	int n, sum=0;
	for(;x>10;x/10){
		n = x%10;	
		sum += n;
	}
	sum += x%10;
	
	return sum;
}

답변 1

답변을 작성해보세요.

0

­이준호님의 프로필

­이준호

2021.08.09

	for(;x>10;x/=10){
		n = x%10;	
		sum += n;
	}

x / 10 에서 오타가 나신거 같네요

x /= 10 으로 고쳐주시면 됩니다