<문제>
https://www.acmicpc.net/problem/2033
<내가 제출한 코드>
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int num, i, cnt = 0;
scanf("%d", &num);
if (num >= 10) {
for (i = 1; num / i != 0; i *= 10, cnt++);
cnt--;
i = 1;
for (i = 1; cnt--; i *= 10) {
if ((num % (i * 10) / i) >= 5) {
num -= ((num % (i * 10) / i) * i);
num += i * 10;
}
else num -= ((num % (i * 10) / i) * i);
}
}
printf("%d", num);
}
코드가.. 너무 복잡한 느낌이 좀 있긴 하다.
근데 그냥 말그대로 만약 입력한 숫자 num이 10 이상일때,
일의 자리의 숫자가 5이상이면 그 자리에 있는 숫자를 0으로 만들고 다음 자리의 숫자에 1을 더하고,
5미만이면 그냥 그 자리에 있는 숫자를 0으로 만든다.
이를 자리수 - 1번 만큼 반복시켜 주는 코드이다.
** 실수한 부분?
일의 자리의 수가 입력된다면 num이 출력되지 않는 오류가 있었다.
그래서 전체적으로 if문을 씌워서 만약 num이 10 미만이면 그냥 num자체를 출력할 수 있게 해주었다.
'⌨️ Algorithm > C' 카테고리의 다른 글
1/19 [C] 백준 1110번 - 더하기 사이클 (0) | 2022.01.24 |
---|---|
1/19 [C] 백준 1373번 - 2진수 8진수 (0) | 2022.01.24 |
1/14 [C] 백준 1152번 - 단어의 개수 (0) | 2022.01.24 |
1/14 [C] 백준 1924번 - 2007년 (0) | 2022.01.24 |
1/12 [C] 백준 12790번 - Mini Fantasy War (0) | 2022.01.24 |
댓글