-
콜라츠 추측코딩 테스트/프로그래머스 2021. 8. 16. 15:43
https://programmers.co.kr/learn/courses/30/lessons/12943
코딩테스트 연습 - 콜라츠 추측
1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2
programmers.co.kr
문제 이해
-> 입력된 수가 짝수라면 2로 나눔
-> 혹은 홀수라면 3을 곱하고 1을 더함
-> 결과가 1이 될 때까지 반복
문제 주의
-> 1이상 8,000,000 미만의 정수
-> 500번을 반복해도 1이 되지 않는다면 -1을 반환
문제 풀이
-> 반복문을 통해 짝수인지 홀수인지 판별 후 식 대입
-> 삼항연산자를 통해 연산 수행
-> 작업을 실행했다는 과정이 담긴 answer 변수 1 증가
-> 만일 숫자가 1이 되거나, answer 변수가 500이 된다면 반복문 탈출
-> 최종 수 반환하되 answer 변수가 500이라면 -1을 반환, 아니라면 answer 변수 그대로 반환
#include <string> #include <vector> using namespace std; int solution(int num) { int answer = 0; long long temp = num; while(true) { if (temp == 1 || answer == 500) break; temp = temp % 2 == 0 ? temp = temp / 2 : temp * 3 + 1; answer++; } return answer == 500 ? -1 : answer; }
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
가운데 글자 가져오기 (0) 2021.08.20 나누어 떨어지는 숫자 배열 (0) 2021.08.19 문자열 다루기 기본 (0) 2021.08.18 하샤드 수 (0) 2021.08.17 짝지어 제거하기 (0) 2021.07.30