01.28 TIL

2023. 1. 28. 09:18개발일지

오늘은 프로그래머스 콜라츠 추측을 연구했습니다.

public class Solution4 {
    public int solution(int num) {
        int answer = 0;
        while(num!=1){
//               int num이 1이 아닐 경우
            if(answer==500){
//                500번 수행을 했을 경우
                answer=-1;
//                answer를 1개씩 빼주고
                break;
//                if문을 break 한다
            }
            num = num % 2 == 0 ? num / 2 : num * 3 + 1;
//            입력된 수가 짝수라면 2로 나누고 홀수라면 3을 곱하고 1을 더합니다.
            answer++;
//            결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.
        }
        return answer;
    }
}

 

열심히 풀어서 프로그래머스에 돌렸으나

오류1

모가 문제일까 코드를 다시 들여보다가 num이 int일 경우 연산 과정에서 int의 최대값(21억)을 초과하게 되어, 숫자가 짤려 연산이 뒤틀리게 된다 public int solution(long num)으로 바꿔주면 동작합니다.

각 변수의 최대값을 놓쳤다는 것을 깨닮았고 다음에는 이런 실수를 반복하지 말아야겠다.

'개발일지' 카테고리의 다른 글

01.31 모의고사(JAVA)  (0) 2023.01.31
01.30 알고리즘  (0) 2023.01.30
01.27 TIL  (1) 2023.01.27
01.26 SOLID  (0) 2023.01.26
01.25 객체 지향 프로그래밍(Object Oriented Programming)  (0) 2023.01.26