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;
}
}
열심히 풀어서 프로그래머스에 돌렸으나
모가 문제일까 코드를 다시 들여보다가 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 |