코딩굼벵이
구르는 중
코딩굼벵이
  • 분류 전체보기 (116)
    • [C_C++]이론 공부 (17)
      • 알고리즘 (11)
      • 이론+STL (6)
    • [C_C++]코딩테스트 연습 (45)
      • [프로그래머스] level 1 (26)
      • [프로그래머스] level 2 (5)
      • [백준] 일반 문제 (12)
      • 기타 (2)
    • Solana (28)
      • Documentation (9)
      • Validator - 공부 (10)
      • Validator - 실행 (devnet & te.. (6)
      • 그 외 (3)
    • React (4)
    • Linux (2)
    • Javascript (2)
    • 블록체인 기반 핀테크 및 응용 SW 개발 (8)
      • React (1)
      • Javascript (3)
      • Solidity (3)
      • 프로젝트 (1)
    • 기타 (10)

블로그 메뉴

  • 🌟 깃허브
  • 🌿 Portfolio(2021)
  • 홈
  • 태그
  • 방명록

티스토리

최근 글

태그

  • Hooks #React
  • 솔라나
  • 밸리데이터
  • Immer #ContextAPI
  • 모니터링
  • grafana

인기 글

전체 방문자
오늘
어제
hELLO · Designed By 정상우.
코딩굼벵이

구르는 중

[C++] 콜라츠 추측 - 3번째 기본 예제, 13번 주의
[C_C++]코딩테스트 연습/[프로그래머스] level 1

[C++] 콜라츠 추측 - 3번째 기본 예제, 13번 주의

2021. 7. 30. 23:54
728x90

 

내 풀이

그냥 보면 되게 쉬운 문제인데 까보니 좀 까다로운 문제였다.

  1. 처음엔 3번째 테스트 케이스에서 -1이 아니라 488이 나오는데, 아마 3을 곱하고 1을 더하면서 int의 범위를 벗어나는 등의 문제가 생기기 때문이 아닐까 싶다. 이는 짝수 케이스의 else로 홀수를 잡지 않고 num % 2 == 1 else if 문으로 홀수를 잡아서 해결했다.
  2. 처음에 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
    '[C_C++]코딩테스트 연습/[프로그래머스] level 1' 카테고리의 다른 글
    • [C++] 프로그래머스 - 체육복 (그리디)
    • [C++] 프로그래머스 - 부족한 금액 계산하기
    • [C++] 프로그래머스 - 이상한 문자 만들기
    • [C++] 프로그래머스 - 시저 암호
    코딩굼벵이
    코딩굼벵이
    구르는 재주 연마 중

    티스토리툴바