728x90
반응형
https://namu.wiki/w/%EC%BD%9C%EB%9D%BC%EC%B8%A0%20%EC%B6%94%EC%B8%A1
주어진 수가 1이 될때까지 반복해서 작업을 한다.
1. 주어진수가 짝수면 2로 나눈다.
2. 주어진수가 홀수면 3을 곱하고 1을 더한다.
3. 결과로 나온수에 같은 작업(1번 or 2번)을 1이 될때까지 반복한다.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(long num) {
if(num == 1) {
return 0;
}
for(int i = 0; i < 500; i++) {
if(num % 2 == 0) {
num /= 2;
}
else {
num = (num*3)+1;
}
printf("%d ", num);
if(num == 1) {
return i+1;
}
}
return -1;
}
조건 1. 주어진 수가 1이면 0을 리턴
조건 2. 500회 이상 시도해도 1이 나오지 않으면 -1을 리턴.
num = (num % 2 == 0) ? (num / 2) : (3 * num + 1);
가운데 if ~ else 문을 위 코드로 대체하면 간결해짐.
- 끝 -
728x90
반응형
'Programming language > 코딩테스트' 카테고리의 다른 글
코딩테스트 - 번호가리기, C언어 (0) | 2022.09.29 |
---|---|
코딩테스트 - 두 정수 사이의 합, C언어 (0) | 2022.09.29 |
코딩테스트-문자열을 정수로 바꾸기, C언어, itoa() (0) | 2022.09.29 |
코딩테스트 - 하샤드 수, C언어 (1) | 2022.09.29 |
코딩테스트 - 정수 제곱근 판별, C언어 (0) | 2022.09.29 |