[백준] 1110: 더하기 사이클
5308 단어 Problem SolvingCC
문제
[Bronze_I] 정답 비율 46%
https://www.acmicpc.net/problem/1110
생각
- 복잡한 연산 -> 함수로 만들어 코드를 분리하자
- (입력받은 수)와 (함수의 리턴 값)이 같을 때까지 반복:
(입력받은 수)와 (함수의 리턴 값) 비교
2-1. 다르면 cycle(반복횟수) ++
- (입력받은 수)와 (함수의 리턴 값)이 처음부터 같다면? (
if (cycle==0)
cycle = 1 )
배운점
(입력받은 수)와 (함수의 리턴 값) 비교
2-1. 다르면 cycle(반복횟수) ++
if (cycle==0)
cycle = 1 )문제가 쉬워서 크게 배운 점은 없었다. 복잡한 연산은 함수로 만들어 분리하면 가독성에 도움이 된다 정도 ?
코드
#include <stdio.h>
int calculate(int num){
int new=0;
if(num<10)
new = num;
else
new = (num/10 + num%10)%10;
new += (num%10)*10;
return new;
}
int main(void){
int cycle = 0;
int input = 0;
int temp=0;
scanf("%d", &input);
while(input != temp){
if(cycle == 0)
temp = calculate(input);
else
temp = calculate(temp);
cycle++;
}
if(cycle==0)
cycle = 1;
printf("%d", cycle);
return 0;
}
Author And Source
이 문제에 관하여([백준] 1110: 더하기 사이클), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@yeob-yi/boj-1110
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#include <stdio.h>
int calculate(int num){
int new=0;
if(num<10)
new = num;
else
new = (num/10 + num%10)%10;
new += (num%10)*10;
return new;
}
int main(void){
int cycle = 0;
int input = 0;
int temp=0;
scanf("%d", &input);
while(input != temp){
if(cycle == 0)
temp = calculate(input);
else
temp = calculate(temp);
cycle++;
}
if(cycle==0)
cycle = 1;
printf("%d", cycle);
return 0;
}
Author And Source
이 문제에 관하여([백준] 1110: 더하기 사이클), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yeob-yi/boj-1110저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)