반응형
코딩하기 전 생각하기
/*
다음을 500번 반복한다.
숫자가 1이면 break한다.
숫자가 짝수이면 2로 나눈다.
숫자가 홀수이면 3을 곱하고 1을 더한다.
반복문이 끝날 때 까지 1이 나오지 않았으면 -1을 반환한다.
반복된 수를 반환한다.
*/
코드
#include <bits/stdc++.h>
using namespace std;
int solution(int num) {
int i;
long long n = num;
for ( i = 0; i < 500; i++ ) {
if ( n == 1 ) break;
if ( n % 2 == 0 ) n /= 2;
else n = n * 3 + 1;
}
if ( i == 500 ) return -1;
return i;
}
느낀점
디버깅을 해보니 num을 int로 했을 때 오버플로우가 생겨서 long long으로 변환시켜주었다.
(주의) 기록용으로 작성한 글입니다. 코드가 허접하거나 알고리즘의 효율이 낮을 수 있습니다.
댓글 환영합니다!
반응형
'Algorithm > programmers' 카테고리의 다른 글
[프로그래머스] 모의고사 (C++) (0) | 2021.08.02 |
---|---|
[프로그래머스] 2016년 (C++) (0) | 2021.07.24 |
[프로그래머스] 방문 길이 (C++) (0) | 2021.07.24 |
[프로그래머스] 약수의 개수와 덧셈 (C++) (0) | 2021.07.23 |
[프로그래머스] 소수 만들기 (C++) (0) | 2021.07.23 |
댓글