블램의 일상 IT카페

백준 1110번 [더하기 사이클] - 풀이(이거 저만 어렵나요...) 본문

IT/알고리즘 문제 풀이

백준 1110번 [더하기 사이클] - 풀이(이거 저만 어렵나요...)

ble_ram 2022. 11. 18. 19:35

문제.


 

 

 

 

 

난 이문제 완전히 틀림.


: 일단 문제만 보고 대충 어떤 방향으로 코딩할지는 못정했고 대충 십의 자리와 일의 자리를 가지고 구하는 건 알았다.

이미 이전 문제들을 통해 10의자리일 경우 N값/10 , 1의 자리일 경우 N값%10 여기까지만 알아도 충분했다.

 

반복문은 while문 사용 ㅡ> 정확한 반복횟수를 구할 수 없기에..

 

우선 나는 해볼 수 있는 데까지 코딩을 했다. 불나게 2시간 박은거 같다.... ( ㅠㅜ)

학창시절 나는 수학을 좋아는하지만 성적은 잘 안나오는 그런 애였다.

그래서 그런가 수학적 사고과 꽝이라 이런 문제들은 좀 힘든듯..(그럼 앞으로 다 힘들겠네 ㅇㅇ)

ㅇㅇ

ㅠㅜ

 

그래서 오기 내려놓고 풀이를 참고하기로 했다.(공책에 수식, 코드 써가며 열심히했다.. 할 수 있는데까진..)

근데 왠걸? 비슷비슷했다...

 

대충 참고한 블로그 링크를 남기고 풀이를 올리고 끝내겠다.

 :https://daily-life-in-20s.tistory.com/23 근데 이분도 다른 분들걸 참고한...

 

 

 

 

 

 

풀이.


#include <stdio.h>
int main() {
  int n, result;
  scanf("%d", &n);
  result = n;
// ^ 입력값

  int a, b, r, sum;
  int cnt=0;
//^ 변수
  
  while(1){
  a=(n/10), b=(n%10);
  r=(a+b)%10;
  sum=(b*10)+r; 
  n = sum;
//^ 수식 
  
  cnt++;
//^ 카운터  
  
  if(result==sum) break;
  }  
//break문 (입력값과 수식의 결과가 같을때 끝)     
  
  printf("%d", cnt);
  
  return 0;
}

코드분석 : 

a는 입력값의 10의 자리수의 앞부분

b는 입력값의  1의 자리수

r은 a+b의 합의 1의 자리수

 

예제로 살펴보자면 n=26 일때

2(a) + 6(b) = 8(a+b) -> {but. 여기서 (a+b)에 %를 해주는 이유는 8은 한자리수라 굳이 필요없지만 9(a) + 9(b) 같은 경우는

                                      9(a) + 9(b) = 18(a+b)이므로 %나머지(1의 자리수)를 구해야만 답이 된다. 한마디로 예외를 없에                                          기 위해 8이 필요없다고 해도 %해줘야한다. 게다가 한자리수를 나눠봤자 나머지는 그대로 나온                                           다.(참고로 내가 틀린 이유 중 제일 큰 원인이 8을 10으로 나눈 나머지가 0인줄 알았다.<-ㄹㅇ바보}   

60[(b)*10]+8 = 68(sum)

n = 68(sum)

이후 다시 반복..

 

 

한 번 반복할때 마다 카운터는 1씩 늘고, 수식에서 반복에 쓰일 입력값 n을 초반에 따로 result에 

입력해줘서 안전하게 조건문까지 입력값(n = result)를 쓸 수 있다.

 

그래서 입력값과 수식의 값이 같아질때 이 반복문은 동작을 멈추고, 누적된 카운터 수를

출력하게 된다. 끝/.~~~~!!!


 

문제를 풀면서 확실히 느끼는건 구현문제나 뭐든지 수학이 제일 중요하다는 것이다.

난 수식을 제대로 공책에 썻고 코딩도 했지만 나머지값에서 실수가 난데다,

이후 수식을 어떻게 조건문까지 가져갈지 이게 반복이 분명 안되는데 했던 고민들이

(^ 이 고민은 result = n; 코드로 한방에 풀렸다. ㄷㄷ;;

내가 고민했던 수식의 마지막 코드를 분명 반복시킬려면 n을 넣어야하는데,

그러면 조건문을 쓸 수가 없다. 암튼 이건 풀이를 안봤으면 몇일은 걸렸을 것 같다.)

 

이게 브1인데 ㅠㅜ 앞으로 어카노...

Comments