티스토리 뷰
https://programmers.co.kr/learn/courses/30/lessons/12943
코딩테스트 연습 - 콜라츠 추측
1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2��
programmers.co.kr
[문제 풀이]
1. 해당 매개변수를 그대로 사용하면 Overflow가 발생된다.
2. 주어진 수가 1 ~ 8_000_000 이므로 long 타입으로 변환하여도 손실되는 값이 없으므로, 변환해도 된다.
3. 1인 경우에는 바로 값을 반환해야 하기 때문에 1을 예외처리해준다.
4. 나머지는 문제에서 주어진대로 작성한다.
4-1. 입력된 수가 짝수라면 2로 나눈다.
4-2. 입력된 수가 홀수라면 3을 더하고 1을 나눈다.
4-3. 1일 때까지 반복한다.
4-4. 500번을 반복해도 1이 되지 않는다면 -1을 반환한다.
[소스 코드]
public class CollatzConjecture {
public static void main(String[] args) {
int num = 626331;
System.out.println(solution(num));
}
private static int solution(int num) {
long answer = num;
for (int i = 0; i < 500; i++) {
// 주어진 수가 1인 경우와 해당 수를 계산 후 1인지 판별하는 부분을 한번에 처리
if (answer == 1) {
return i;
}
if (answer % 2 == 0) {
answer /= 2;
continue;
}
answer = answer * 3 + 1;
}
return -1;
}
}'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 하샤드 수 (lv.1) (0) | 2020.07.26 |
|---|---|
| [프로그래머스] 평균 구하기 (lv.1) (0) | 2020.07.26 |
| [프로그래머스] 최대공약수와 최소공배수 (lv.1) (0) | 2020.07.24 |
| [프로그래머스] 짝수와 홀수 (lv.1) (0) | 2020.07.24 |
| [프로그래머스] 제일 작은 수 제거하기 (lv.1) (0) | 2020.07.24 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Python
- 2019 카카오 개발자 겨울 인턴십
- bfs
- 저장소
- git
- repository
- OS
- 백준
- Algorihtm
- 이것이 코딩테스트다
- 알고리즘
- 2020 카카오 인턴십
- 그리디
- 깃
- binary search
- 단계별로 문제풀이
- 자료구조
- Idempotent
- 코틀린
- DP
- 그래프
- spring boot 2.3.1
- 열혈강의
- 정렬
- Algorithm
- dfs
- programmers
- Summer/Winter Coding(~2018)
- 구현
- BOJ
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함
