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
- Programmers
- Summer/WinterCoding
- 모달
- 스킬체크
- Fullcalendar
- php
- androidstudio
- AJAX
- 안드로이드
- level1
- 백준
- 월간코드챌린지시즌3
- SimpleDateFormat
- 스킬체크테스트
- modal
- Node
- 월간코드챌린지시즌2
- MSSQL
- 나머지가1
- 프로그래머스
- Android
- REACT
- bootstrapModal
- bootstrap
- 동적웹페이지
- java
- 코딩테스트
- 코딩테스트연습
- 연습문제
- 부트스트랩
Archives
- Today
- Total
개발하는 고양이 오이
18. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 - 콜라츠 추측 / 다른 사람의 풀이 본문
코딩테스트 - JAVA/프로그래머스 Programmers
18. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 - 콜라츠 추측 / 다른 사람의 풀이
Cucum 2022. 4. 29. 17:35
https://programmers.co.kr/learn/challenges
프로그래머스 코딩테스트 연습 Level.1 - 콜라츠 추측
풀이
class Solution {
public int solution(long num) {
int answer = 0;
// num 이 1이 될 때까지 반복(while)
while(num != 1) {
if (num % 2 == 0) { // num이 짝수이면
num /= 2; // 2 나누기
answer++;
if (num == 1) { // 이때 num이 1이 되면 break
break;
}
}
if (num % 2 != 0) { // num이 홀수이면
num = num * 3 + 1; // 3 곱하고 1 더하기
answer++;
if (num == 1) { // 이때 num이 1이 되면 break
break;
}
}
if (answer > 500) { // 500 번 반복(answer 값)보다 많아지면 -1
answer = -1;
break;
}
}
return answer;
}
}
(풀이 실패 과정)
class Solution {
public int solution(int num) {
int answer = 0;
while(num != 1) {
if (num % 2 == 0) {
num /= 2;
answer++;
if (num == 1) {
break;
}
}
if (num % 2 != 0) {
num = num * 3 + 1;
answer++;
if (num == 1) {
break;
}
}
if (answer > 500) {
answer = -1;
break;
}
}
return answer;
}
}
홀수 -> 짝수 -> 홀수 -> 짝수 형태를 계속 반복하다보면 num이 int 형이기때문에 오버플로우 발생.
-> num을 long으로 변경하거나, long I = (long) num; 이런식으로 형변환을 해주면 됨
다른 사람의 풀이
삼항 연산자로 간단하게 해결
'코딩테스트 - JAVA > 프로그래머스 Programmers' 카테고리의 다른 글
20. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 - 정수 내림차순으로 배치하기 / 다른 사람의 풀이 (0) | 2022.04.30 |
---|---|
19. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 - 자연수 뒤집어 배열로 만들기 / 다른 사람의 풀이 (0) | 2022.04.30 |
17. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 - 하샤드 수 (0) | 2022.04.29 |
16. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 - x만큼 간격이 있는 n개의 숫자 / 13,14번 실패 해결 (0) | 2022.04.29 |
15. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 - 핸드폰 번호 가리기, 짝수와 홀수 (0) | 2022.04.28 |