Categories: Algorithm

3n+1 문제 (The 3n+1 Problem / 알고리즘 트레이닝 북 1번 문제)

알고리즘 트레이닝 책을 보고 3n+1 문제를 풀어보았습니다.

최적화 된 코드는 아닙니다. 인터넷에서 여러 가지 코드를 찾아 보실 수 있을 것입니다.

[이곳]을 방문하시면 문제와 좀 더 최적화 된 답을 보실 수 있을 것입니다.

여러 가지 방법을 적용해 볼 까 하다가 많은 답이나 코딩 방법이 나오기 때문에

처음 답을 맞췄던 코드로 올립니다. 간단하니 참고하시길 바랍니다.

1146637707.zip




/*      @JUDGE_ID:      110101  100     C++     */

/* @BEGIN_OF_SOURCE_CODE */

#include <iostream>

using namespace std;

int main()
{
       int oriStart = 0;
       int oriEnd = 0;

       while(cin >> oriEnd >> oriStart != 0) ///< 두개의 값을 입력받는다.
       {
               int start = oriStart;
               int end = oriEnd;

               int maxCount = 0; ///< 최대 사이클 횟수를 저장

               if(end > start) ///< 만약 서로 입력 순서가 바뀌었다면 서로 바꿔준다.
                       swap(end, start);

               for(int i = end; i <= start; ++i)
               {
                       if(i < 1 || i >= 1000000) ///< 예외처리 코드
                               continue;

                       int count = 1;
                       int result = i;

                       while(result != 1)
                       {
                               if(!(result & 1)) ///< 짝수일때  == if(result % 2 == 0)
                               {
                                       result >>= 1;; ///< == result /= 2
                               }
                               else ///< 홀수일때
                               {
                                       result = result * 3 + 1;
                               }
                               ++count;
                       }
                       if(count > maxCount) ///< 현재 수가 최대 사이클을 기록했다면 기록을 갈아치우자
                               maxCount = count;
               }
               cout << oriEnd << ” “ << oriStart << ” “ << maxCount << endl;
       }

       return 0;
}

/* END_OF_SOURCE_CODE */
dingpong

Share
Published by
dingpong

Recent Posts

IHG Points Purchase Promotion: 100% Bonus Points

IHG Points Purchase Promotion: 100% Bonus Points (Until June 29, 2024) 👍 Hello everyone 🖐️🖐️,…

5개월 ago

IHG Summer Stay Bonus Points Promotion (2N2K, 2N3K, 4N8K)

Introduction to IHG Bonus Points Promotion Hello everyone! Today, I'd like to introduce you to…

5개월 ago

LFS error at git checkout in Jenkins

Problem stdout: stderr: Downloading xxxx.a (83 MB) error: git-lfs smudge -- 'xxxx.a' died of signal…

3년 ago

플레이모빌 크리스마스 XXL 6629 산타 해외직구 구매가 배송비

https://www.playmobil.de/playmobil-xxl-weihnachtsmann/6629.html 구매가 : 48.49 유로 (플레이모빌 독일 홈페이지) 결제하는데 안되서 PayPal 로 결제하니 잘 잔행…

4년 ago

코카콜라 제로 355ml 72캔 구매가 (캔당 453원)

롯데온에서 355ml 24캔 롯데카드로 구매시 13,210원 https://www.lotteon.com/p/product/PD36294 APP으로 35,000원 이상 구매시 7,000 포인트 적립 행사…

4년 ago

경동나비엔 온수매트 EQM541-QS (퀸사이즈) 구입가

구입 매장 : 현대 홈쇼핑 (홈쇼핑 방송 중) 모바일 앱 http://www.hyundaihmall.com/front/pda/itemPtc.do?slitmCd=2114353981 최종 결제 가격 :…

4년 ago