본문 바로가기
정올 문제풀이

정올 1009 : 각 자릿수의 역과 합

by watergrace2u 2020. 4. 28.
반응형
SMALL

* 0 입력시 종료

만약 456100 을 역순으로 출력시

1. 1654 로 출력 되거나 (비교적 복잡)

2. 001654 로 출력되는 방법이 있다. (간단)

둘다 정리할 예정이지만 문제에서는 1번째로 하라고 하였으므로 1번째 먼저 정리해보겠다.

 

첫번째 방법은 아래의 방식을 이용한다.

ex> 역순을 구하고 싶은 수: 453

(0*10) + (453%10) = 0 + 3 = 3

(3*10) + (45%10) = 30 + 5 = 35

(35*10) + (4%10) = 350 + 4 = 354

 

#include <stdio.h>

// quotient remainder

void Reverse(int n) {
	int sum = 0, a = 0, b = 0;
	while (n) {                            // while(n!=0) 과 같은 표현
		a = (a * 10) + (n % 10);
		sum += (n % 10);
		n /= 10;
	}
	printf("%d %d\n", a, sum);
}

int main() {
	int n;
	int sum;
	while (1) {
		scanf("%d", &n);
		if (n == 0)break;    // 0입력시 종료
		Reverse(n);
	}
	return 0;
}

 

참고) 두번째 방법 (문제 답 아님!)

1) while문 사용(가장 쉬운 역순 출력)

#include <stdio.h>

int main() {
	int n;
	scanf("%d", &n);
	while (n != 0) {
		printf("%d", n % 10);
		n /= 10;
	}
	return 0;
}

 

2) do while문 사용

#include <stdio.h>

int main() {
	int n;
	scanf("%d", &n);
	do {
		printf("%d", n % 10);
		n /= 10;
	} while (n != 0);
}

 

 

반응형
LIST

댓글