문제
풀이
(1) 문제 분석하기
- num의 최대 범위가 8,000,000이기 때문에 long으로 타입변환!!
- 반복문 안에서 조건문을 만들어 짝홀수를 판별
(2) 슈도코드 작성하기
입력 받은 num을 long타입으로 변환
횟수를 담을 answer 변수 선언
if(num이 1이면) { return 0 }
while(num이 1이 아니면) {
if(answer가 500이면) { return -1 }
else if(num이 짝수이면) {
num을 2로 나누고
answer++
}
else if(num이 홀수이면) {
num에 3을 곱하고 1을 더하고
answer++
}
}
(3) 코드로 구현하기
package algorithm.test11;
public class Solution {
// 1 <= num < 8,000,000이므로 long으로 형변환
// while문으로 num이 1이 될 때까지
// while문 안쪽으로 if/else 로 짝홀수 판별
public static void main(String[] args) {
int n = 626331;
System.out.println(solution(n));
}
public static int solution(int intNum) {
long num = intNum; //long으로 변환
int answer = 0;
if (num == 1) {
return 0;
}
while (num != 1) {
if (answer == 500) {
return -1;
} else if (num % 2 == 0) {
num = num / 2;
answer++;
} else if (num % 2 != 0) {
num = num * 3 + 1;
answer++;
}
}
return answer;
}
}
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'📊 Algorithm&SQL' 카테고리의 다른 글
[Java/프로그래머스] 3진법 뒤집기 (0) | 2022.11.19 |
---|---|
[Java/프로그래머스] 하샤드 수 (0) | 2022.11.19 |
[Java/프로그래머스] 자릿수 더하기 (0) | 2022.11.19 |
[Java/프로그래머스] 이상한 문자 만들기 (0) | 2022.11.19 |
[Java/프로그래머스] 완주하지 못한 선수 (0) | 2022.11.19 |