728x90
내 풀이
그냥 보면 되게 쉬운 문제인데 까보니 좀 까다로운 문제였다.
- 처음엔 3번째 테스트 케이스에서 -1이 아니라 488이 나오는데, 아마 3을 곱하고 1을 더하면서 int의 범위를 벗어나는 등의 문제가 생기기 때문이 아닐까 싶다. 이는 짝수 케이스의 else로 홀수를 잡지 않고 num % 2 == 1 else if 문으로 홀수를 잡아서 해결했다.
- 처음에 return i+1을 포문 맨 밑에 두고 제출해보니 13번에서 오류가 났는데, 1을 넣었을 때는 해당 과정을 거치지 않는 점을 고려하지 못해서였다. 이는 포문 맨 위에서 num==1인지 검사하고 return 함으로써 해결했다.
#include <string>
#include <vector>
using namespace std;
int solution(int num) {
for (int i = 0; i < 500; i++) {
if (num == 1) return i;
if (num % 2 == 0) num /= 2;
else if (num % 2 == 1) num = num * 3 + 1;
}
return -1;
}
쉬운 문제를 어렵게 내는 법....^.ㅠ
'[C_C++]코딩테스트 연습 > [프로그래머스] level 1' 카테고리의 다른 글
[C++] 프로그래머스 - 체육복 (그리디) (0) | 2022.08.25 |
---|---|
[C++] 프로그래머스 - 부족한 금액 계산하기 (0) | 2021.09.08 |
[C++] 프로그래머스 - 이상한 문자 만들기 (0) | 2021.07.30 |
[C++] 프로그래머스 - 시저 암호 (0) | 2021.07.23 |
[C++] 프로그래머스 - 소수 찾기 (0) | 2021.07.23 |