강의로 돌아가기
James_ParkH

왜 3번째 testcase가 -1이 안나오고 488이 나오던데....

public class Solution {
public int solution(int num) {
for(int i = 0; i < 500; ++i)
{
if (num == 1)
{
return i;
}
num = num % 2 == 0 ? num / 2 : num * 3 + 1;

}

    return -1;
}

}

작성중인 코드―Solution.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Solution {
    public int solution(int num) {
        int answer = 0;

        for(int i = 0; i < 500; ++i)
        {
            if (num == 1)
            {
                return i;
            }

            if (num % 2 == 0)
            {
                num /= 2;
            }
            else
            {
                num = num * 3 + 1;
            }
        }

        return -1;
    }
}
1 개의 답변
윤정랑

홀수 -> 짝수 -> 홀수 -> 짝수 형태를 계속 반복하면 num이 int 형이라서 오버플로우 발생해요.
long l = (long) num; 이런 형태로 형변환해서 l에 대해서 작업하면 테스트케이스 통과합니다

  • nect2r

    윤정랑님 와 .. 감사합니다! int 오버플로우는 생각도 못했어요!

    nect2r―2022.03.01 12:33
  • 김성훈

    와 감사합니다!

    김성훈―2022.09.06 19:28
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.