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
- 문자열
- Java
- pandas
- 후위 표기법
- 규칙찾기
- 메뉴리뉴얼
- 점프와 순간이동
- 어려웠던 문제
- 쿼드압축 후 개수세기
- 완전탐색
- 에라토스테네스의 체
- 완전 탐색
- 프로그래머스
- 튜플
- 반복문
- dfs
- 영문자 확인
- 최소공배수
- 알고리즘
- 동적계획법
- 2017 카카오 코드
- 조합
- HashSet
- HashMap
- Dynamic Programming
- fragment identifier
- Stack
- 순열
- python
- 보이어무어
Archives
- Today
- Total
csmoon1010의 SW 블로그
[200514] 콜라츠 추측 - 연습문제(level1) 본문
1. 문제이해
- collatz 추측을 진행
1-1. 짝수 : 2로 나눈다.
1-2. 홀수 : 3을 곱하고 1을 더한다.
2. 같은 작업을 1이 될 때까지 반복
2. 전략
- num이 1이 아닌동안 1-1, 1-2의 과정 반복
: (num % 2 == 0) ? (num / 2) : (num * 3 + 1)
- 수행할 때마다 answer++하고 500이상이되면 -1로 바꾸고 break
3. 참고사항
- 계속 홀수가 된다면 곱하는 과정이 반복되므로 int의 범위를 벗어나 overflow 발생
--> 수가 커질 가능성이 있다면 long타입을 생각해보자!!
4. 코드
class Solution {
public int solution(long num) {
int answer = 0;
while(num != 1){
if(answer >= 500){
answer = -1;
break;
}
num = (num % 2 == 0) ? (num / 2) : (num * 3 + 1);
answer++;
}
return answer;
}
}
'Coding Test > 프로그래머스' 카테고리의 다른 글
[200514] 하샤드 수 - 연습문제(level1) (0) | 2020.05.14 |
---|---|
[200514] 평균 구하기 - 연습문제(level1) (0) | 2020.05.14 |
[200513] 최대공약수와 최소공배수 - 연습문제(level1) (0) | 2020.05.13 |
[200513] 짝수와 홀수 - 연습문제(level1) (0) | 2020.05.13 |
[200512] 제일 작은 수 제거하기 - 연습문제(level1) (0) | 2020.05.12 |
Comments