다양한 코드가 나올 수 있는 쉬운 문제였다.
1) 짝수라면 /2
2) 홀수라면 *3 +1
3) 1이라면 0
4) 500번 계산하면 -1
을 반환해주면 된다.
내 코드
class Solution {
public int solution(int num) {
int answer = 0;
int count = 0;
while(count <= 500){
if(num == 1) {
answer = count;
break;
}
if(num % 2 == 1)
num = (num * 3) +1;
else
num = num / 2;
count++;
}
if(count > 500) answer = -1;
return answer;
}
}
while문으로 들어오면 num == 1 인지부터 확인한다. 값이 1이면 count 값의 0을 받고 바로 break;
아니라면 본문의 주문대로 계산을 반복하기 시작한다.
몇 번의 반복을 했는지 count 증감시키고, count가 500이 넘으면 while문 조건으로 인해 중단.
마지막 count > 500 조건식을 통과하여 -1을 반환한다.
다른사람 코드
class Solution {
public int solution(long num) {
int answer = 0;
while(num != 1){
answer++;
if(answer==500)
return -1;
if(num%2==0){
num/=2;
}else{
num=num*3+1;
}
}
return answer;
}
}
내 코드와 비슷하지만 나보다 변수 하나 덜 써서 만들어진 코드
count를 따로 선언하지 않고 answer를 그대로 사용했다.
num의 값이 1이 될 경우, 해당 answer 값을 반환한다. 깔끔하고 괜찮은 코드같다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Java]Lv.1 서울에서 김서방 찾기 (0) | 2022.09.29 |
---|---|
[프로그래머스/Java] LV.1 두 정수 사이의 합 (0) | 2022.09.22 |
[프로그래머스/Java] LV.1 x만큼 간격이 있는 n개의 숫자 (1) | 2022.09.22 |
[프로그래머스/Java] LV.1 정수 내림차순으로 배치하기 (0) | 2022.09.21 |
[프로그래머스/Java] LV.1 하샤드 수 (1) | 2022.09.20 |