반응형
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
'정올 문제풀이' 카테고리의 다른 글
정올 2813 : 소수의 개수 (+ 에라토스테네스의 체) (0) | 2020.04.30 |
---|---|
정올 1740 : 소수 (0) | 2020.04.29 |
정올 1331 : 문자마름모 (0) | 2020.04.28 |
정올 1707 : 달팽이 사각형 (0) | 2020.04.28 |
정올 1339 : 문자삼각형 2 (0) | 2020.04.27 |
댓글