◎ 문제
○ 출처
https://programmers.co.kr/learn/courses/30/lessons/12943
○ 문제 설명
예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야하는지 반환하는 함수, solution을 완성해 주세요. 단, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요. |
○ 제한 사항
|
○ 입출력 예
○ 입출력 예 설명
입출력 예 #1 입출력 예 #2 입출력 예 #3 |
○ 작성 예시 코드
public class Solution {
public int solution(int num) {
int answer = 0;
return answer;
}
}
◎ 나의 문제 풀이
public class Solution
{
public int solution(int num)
{
int answer = -1;
// 입력된 num의 값에 따라 int범위를 벗어나느 경우가 있으므로 long형에 저장
long long_num = num;
for(int i = 0; i < 500; ++i)
{
if (long_num == 1) return i;
long_num = long_num % 2 == 0 ? long_num / 2 : (long_num * 3) + 1;
}
return answer;
}
}
'프로그래밍 문제 풀이 > C#' 카테고리의 다른 글
[프로그래밍 문제 풀이] 프로그래머스 - 행렬의 덧셈 (C#) (0) | 2020.07.20 |
---|---|
[프로그래밍 문제 풀이] 프로그래머스 - 최대공약수와 최소공배수 (C#) (0) | 2020.07.19 |
[프로그래밍 문제 풀이] 프로그래머스 - 정수 제곱근 판별 (0) | 2020.07.18 |
[프로그래밍 문제 풀이] 프로그래머스 - 이상한 문자 만들기 (C#) (0) | 2020.07.18 |
[프로그래밍 문제 풀이] 프로그래머스 - 시저 암호 (C#) (0) | 2020.07.18 |