181103_(土) - PassionOfStudy/Algorithm GitHub Wiki

Programmers_(Collatz Conjecture)

콜라츠 추측 Collatz Conjecture

My Solution

콜라츠 추측이란? 콜라츠 추측 (위키백과참고) 간단히 임의의 수를 입력받아 짝수이면 2를 나누고 홀수이면 3을 곱한 값에 1을 더해서 계산된 결과가 1이 될 때 까지 반복하는 것을 말한다. 프로그래머스 콜라츠 추측문제는 콜라츠추측연산을 하면서 연산횟수가 500번이상이면 -1을 반환하고 500미만이면 연산횟수를 반환한다. 나는 무한루프 while문 이용해서 count를 증가시키며 특정 조건을 만족하면 루프를 탈출하는 형식으로 작성했다.

문제를 풀면서 테스트케이스 15에서 계속 실패했는데 나중에 알아보니 문제에서 제시하지 않은 요구사항인 입력값이 1일 때의 예외처리를 하는 것이었다. if num == 1 { return 0 }코드를 삽입하였더니 해결되었다.

Other Solution

이 문제에서는 요구사항대로 그대로 구현하면 되므로 Logic은 제시해준 셈이다. 반복 루프를 while을 쓸 것인가, for문을 쓸 것인가 그리고 조건문을 switch case문 또는 if else문을 선택하여 만족하는 조건을 만드는 방법차이였다. 개인적으로 박진하라는 분의 코드가 기억에 남았다. 재귀함수를 통해서 문제를 풀었는데 방법이 신선했다. 코드는 김주원이라는 분의 코드가 제일 간단했는데, inout타입이라든지 &연산자를 사용하는 것은 코드에서 처음보았다.

% 재귀함수, 빠른종료(guard문), inout타입, &연산자 대해서 알아봐야겠다.