- Qusetion
- My Code
#include <string>
#include <vector>
using namespace std;
int solution(int num) {
int answer = 0;
long long n = num;
for(int i = 0 ; i < 500; i++)
{
if(n == 1)
break;
if(n % 2 == 1)
n = 3 * n +1;
else
n /= 2;
answer++;
}
if(answer >= 500)
return -1;
else
return answer;
}
- Better Code
#include<iostream>
using namespace std;
int collatz(int num)
{
int answer = 0;
cout<< num <<"\n";
while(answer++ <= 500){
num = num%2 ==0 ? num/2 : num*3+1;
if(num == 1) break;
}
return answer > 500 ? -1 : answer;
}
int main()
{
int testCase = 6;
int testAnswer = collatz(testCase);
cout<<testAnswer;
}
" int 정수의 범위를 파악하자. "
- CheckPoint
- int 형 n의 정수형 수용범위를 확인하고, 필요할시 long이나 long long
- > 형을 사용할 생각을 하자.
- 이제는 짝수or홀수로 조건문의 조건을 작성할 때 if( n & 1 ) 형태를 기억.
%연산자보다 비트연산자가 처리속도가 빠르다.- 3항연산자를 잘 쓰면 코드가 짧아진다.
728x90
반응형
'Algorithm Practice > [ 프로그래머스 ]' 카테고리의 다른 글
[프로그래머스][#42746] 가장 큰수 (0) | 2020.09.12 |
---|---|
[프로그래머스] [#42587] 프린터 (0) | 2020.09.11 |
[ 프로그래머스 ] [ #12926 ] 시저 암호 (0) | 2020.09.08 |
[ 프로그래머스 ] [ #12903 ] 가운데 글자가져오기 (0) | 2020.09.06 |
[ 프로그래머스 ] [ #12915 ] 문자열 내 마음대로 정렬하기 (0) | 2020.09.05 |