강의로 돌아가기
이재욱

5번만 통과 못 하고 있습니다...

제한을 바꾸면서 해봐도 5번만 틀렸다고 나오네요. 제 코드의 문제일 듯 한데 어디가 문제인지 잘 모르겠습니다. 한 번 봐주시고 잘 못된 점들 지적해주세요!

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

      int answer = 0;
      while (num != 1) {
          if (answer == 500) {
              return -1;
          }

          if (num % 2 == 0) {
              num /= 2;
          }
          else {
              num = num * 3 + 1;
          }
          answer += 1;
      }
      return answer;
  }
}
1 개의 답변
장효석

함수로 들어온 num을 함수 내부에서 새로운 long 변수에 집어넣은다음에 그 변수로 연산을 해보세요. 연산을 하다가 값이 너무 커져서 int 최대범위를 넘어가는 케이스를 문제 5번에 넣은것같네요.

기존의 num을 n으로 바꾼후에 함수 첫줄에 long n = num; 추가하시면 될거에요.

  • 이재욱
    덕분에 통과했네요! 감사합니다!! 이재욱 2019.02.12 19:55
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.