[C] 백준 1110번 : 더하기사이클
2020. 8. 25. 16:21
주어진 수의 자릿수를 더해서 나온 수의 일의자리 값을 이용해 주어진 수의 뒤에 붙여 새로운 두자릿수를 만들고, 이 과정을 반복하는 사이클을 실행하는 프로그램을 만들어야 한다. 문제는 아래와 같다.
처음 코드를 구상할 때 변수를 비교적 많이 사용해서 코드를 구상했다. 코드를 작성하다보니 복잡해지고 효율도 생기지 않는 것 같아 변수를 최소한으로 사용하려고 노력했다.
며칠동안 고민해서 코드를 작성하다가 거의 다 완성되었는데 cycle의 값이 출력되지 않는 문제에 직면해 결국 다른 사람들의 블로그를 참고하여 코드를 완성했다.
아래의 블로그를 참고하여 코드를 작성했다.
https://blog.naver.com/paula23/221396206823
작성한 코드는 아래와 같다.
#include <stdio.h>
int main(){
int N, a, b;
int next=-1; //N이 0일 경우를 고려
int cycle=0;
scanf("%d", &N);
//N의 자릿수를 먼저 구함
a = N/10; //N의 십의자리 숫자
b = N%10 //N의 일의자리 숫자
while(N!=next){
int mid = a+b;
next = b*10+mid%10;
cycle++;
//다음 사이클을 위해 새로운 자릿수를 구함
a = next/10; //next의 십의자리 숫자
b = next%10; //next의 일의자리 숫자
//이후 while문의 첫줄부터 다시 반복
}
printf("%d", cycle);
}
혼자 코드에 대해 고민했을 때는 몹시 복잡한 코드일 것이라고 생각했는데 생각보다 간단하게 작성할 수 있는 코드였다. 앞으로는 이런 문제를 만났을 때 혼자서도 충분히 해결할 수 있는 능력을 기를 수 있길.
'Programming > BOJ' 카테고리의 다른 글
[Python] 백준 2163번 : 초콜릿 자르기 (0) | 2021.04.09 |
---|---|
[C] 백준 10039번 : 평균 점수 (0) | 2020.08.25 |
[C] 백준 10951번 : A+B - 4 (0) | 2020.06.07 |
[C] 백준 10952번 : A+B - 5 (0) | 2020.06.03 |
[C] 백준 10871번 : X보다 작은 수 (0) | 2020.06.03 |