본문 바로가기

알고리즘 & 코딩테스트/코딩테스트

Programmers Lv1. "콜라츠 추측"

Programmers Lv1. 콜라츠 추측, 연습문제, 정답률 85%

전형적인 구현문제이다.
Programmers Lv.1 "콜라츠 추측" 시작해보자.

1. 입력값으로 num이 주어지고, 이는 1이상 800만 미만의 정수이다.
2. 주어진 입력값에 따라 작업이 시행된다.
  2-1. 입력값이 짝수이면 2로 나눕니다.
  2-2. 입력값이 홀수이면 3을 곱하고 1을 더합니다.
  2-3. 위 2-1, 2-2를 1이 나올 때까지 반복합니다.
3. 단, 500번 반복해도 1이 되지 않으면 -1을 반환합니다.

필자는 이를 보자마자 의사코드가 떠올랐다. 그저 설명 그대로 구현하면 되는 문제라서 그런것 같다.
의사코드는 (슈도코드 : pseudo code)라고 표기하기도 하며 프로그램 코드를 작성할 때 진행과정을 단계별로 기록한 것이다. 즉, 알고리즘의 수행코드를 인간의 언어로 간략히 설명해논것이다.

이번문제의 절차를 의사코드로 표현해보자.
작성법에 대한 내용을 포함하면 너무 포스팅이 길어지기 때문에 링크를 첨부하도록 하겠다. (👉LINK )

count = 0
While num이 1이 아니면
	if num이 짝수 then
    	num = num/2
    else
    	num = (num*3) + 1
    endif
    
    if count > 500 then
    	count = -1
    endif
endwhile

어... 이렇게 표현하는게 맞나...? 사실 잘 모르겠다. (포스팅을 보고 잘못된 점이 보이면 댓글로 써주시길 바란다.ㅎㅎ)

아무튼 핵심은 설명에서 적혀있는 그대로 구현하는것이다. 필자의 답변을 보자.

solution.py

설명 그대로의 구현이지 않은가?
필자도 코딩테스트의 경험이 많지는 않지만 생각보다 구현문제가 많이 나온다고 한다.
그리고 가장 쉬운 문제유형이다. ㅎㅎ