Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래머스 #mysql #역순 정렬하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #모음 제거 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #가장 큰 물고기 10마리 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #다이얼 #5622 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #mysql #동명 동물 수 찾기 #알고리즘 #코린이 #개발자
- 프로그래머스 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #아픈 동물 찾기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #나이 정보가 없는 회원 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #python 개발자 찾기 #알고리즘 #mysql #코린이 #개발자 #study
- 백준 #네 번째 점 #3009 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #경기도에 위치한 식품창고 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #12세 이하인 여자 환자 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- mysql #min() #max() #최소값 #최대값 #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #
- 프로그래머스 #한 해에 잡은 물고기 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #흉부외과 또는 일반외과 의사 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #동명 동물 수 찾기 #mysql #데이터베이스 #db #코린이 #개발자 #알고리즘
- 프로그래머스 #mysql #알고리즘 #이름이 있는 동물의 아이디 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #자동차 대여 기록에서 장기/단기 대여 구분하기 #코린이 #개발자 #study
- 백준 #일곱 난쟁이 #2309 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #조건에 맞는 회원수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #4153 #직각삼각형 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #어린 동물 찾기 #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #인기있는 아이스크림 #코린이 #개발자 #study
- 프로그래머스 #과일로 만든 아이스크림 고르기 #mysql #알고리즘 #코린이 #개발자 #study
- 특정 옵션이 포함된 자동차 리스트 구하기 #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기 중 가장 큰 물고기의 길이 구하기 #알고리즘 #mysql #코린이 #개발자 #study
- 백준 #
- 코린이 #개발자 #study
- 프로그래머스 #잡은 물고기의 평균 길이 구하기 #mysql #알고리즘 #코린이 #개발자 #study
Archives
- Today
- Total
luke
[프로그래머스] - 콜라츠 추측 본문
https://school.programmers.co.kr/learn/courses/30/lessons/12943
문제.
풀이.
class Solution {
public int solution(int num) {
int answer = 0;
long n = (long) num;
int cnt = 0;
while (n > 0) {
//처음 주어진 수가 1 일경우 0 반환
if (n == 1) {
answer = 0;
break;
}
//반복 회수가 500 이상일때 -1 반환
if (cnt >= 500) {
answer = -1;
break;
}
// 주어진 수가 1이 될때까지 루프가 돌며 반복회수(cnt) 증가
if (n % 2 == 0) {
n = n / 2;
cnt++;
} else {
n = n * 3 + 1;
cnt++;
}
// 주어진 수가 1이 되는 순간 반복회수가 몇인지 반환
if (n == 1) {
answer = cnt;
break;
}
}
return answer;
}
}
문제는 그렇게 어렵지 않았다고 생각한다.
다만..!! 위 문제를 읽어보면 주어진 수 가 1인 경우에는 바로 0을 반환한다고 나와있어 1일경우 루프가 돌자마자 if문을 통해 0을 반환하게 했다. 첫번째 if문이 없다면 1입력을 했을때 cnt는 3을 반환한다.
이게...프로그래머스 오류인지 잘은 모르겠지만... 암튼!! 첫번째 if문이 없어도 정답이 되기에 많이 당황스러웠다.
참!! int형인 num을 long 으로 바꿔준 이유는 500번이상 돌아갔을때의 조건식을 충족하기위해 더큰 타입으로 바꿔준 것이다. 그렇지 않으면 오버플로우가 발생한다..
'알고리즘문제 > 프로그래머스(Java)' 카테고리의 다른 글
[프로그래머스] - 피자 나눠 먹기(3) (자바/Java) (0) | 2024.03.01 |
---|---|
[프로그래머스] - 최댓값 만들기(1) (2) | 2024.02.13 |
[프로그래머스] - 정수 내림차순으로 배치하기 (0) | 2024.01.24 |
[프로그래머스] - 하샤드 수 (2) | 2024.01.21 |
[프로그래머스] - 두 정수 사이의 합 (0) | 2024.01.21 |