[2020-11-26] 콜라츠 추측

2020. 11. 26. 10:40·코딩테스트

푼 시간 : 40분

언어 : 자바

 


 

programmers.co.kr/learn/courses/30/lessons/12943

 

코딩테스트 연습 - 콜라츠 추측

1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2

programmers.co.kr

 

 

동적 계획법을 이해하기 위해 문제를 재귀적으로 풀어보았다.

나름 시간을 많이 잡아먹을 것으로 예상했으나 오히려 재귀적 표현에서 막힌것이 아니라

answer++을 해주어 막혔다.. 혼자서 10분정도 왜 answer에 값이

추가가 안되는지 계속 고민하다가 생각해보니 호출을 하면서 불러야 하는데

호출을 하고나서 부르자니, answer에 값이 추가가 안되는것이 이해가 갔다.

 

얼른 동적 계획법을 이용해 문제를 푸는 방법을 완전히 이해하고싶다.

간결하고 가독성 좋은 코드를 만들고 싶은 생각은 끝이 없는 것 같다.

 

class Solution {
    public int solution(int num) {
        int answer = 0;
        
        answer=Collatz((long)num, answer);
        // long형으로 바꿔야하는 이유가 있는데, 큰 숫자가 홀수로 나올경우
        // int의 범위를 넘어버려, 오버플로우가 되버린다.
        
        return answer;
    }
    
    public int Collatz(long num, int answer){
        if(num==1)
            return answer;
        else if(answer>=500)
        // 500이상일 경우
            return -1;
        else if(num%2==0)
            return Collatz(num/2, ++answer);
        else
            return Collatz((num*3)+1, ++answer);
    }
}

재귀적 표현이라는게 참 말도 쉽고 구조적으로 보기는 간결하나,

생각하는 단계에서나 남이 봤을때 이해하는 단계에서나 은근히 복잡한

무언가가 있는 것 같다.

'코딩테스트' 카테고리의 다른 글

[2021-04-29] K번째 수  (0) 2021.04.29
[2020-12-01] 하샤드 수  (0) 2020.12.01
[2020-11-20] 최대공약수와 최소공배수  (0) 2020.11.20
[2020-11-19] 짝수와 홀수  (0) 2020.11.19
[2020-11-19] 제일 작은 수 제거하기  (0) 2020.11.19
'코딩테스트' 카테고리의 다른 글
  • [2021-04-29] K번째 수
  • [2020-12-01] 하샤드 수
  • [2020-11-20] 최대공약수와 최소공배수
  • [2020-11-19] 짝수와 홀수
jun96
jun96
프로그래밍 공부
  • jun96
    jun의 공부노트
    jun96
  • 전체
    오늘
    어제
    • 분류 전체보기 (66)
      • Spring (6)
        • 개념 (3)
        • 에러 (1)
      • Java (1)
      • Book (20)
        • 모던 자바 인 액션 (12)
        • 디자인 패턴의 아름다움 (7)
      • Algorithm (1)
      • 코딩테스트 (35)
      • 일상 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 이력서
  • 공지사항

  • 인기 글

  • 태그

    aws배포
    자바
    알고리즘
    도커컨테이너빌드업
    프로그래머스
    Algorithm
    전자정부프레임워크
    DeepDive
    스프링
    백준
    최프
    아직 미완성
    Java
    junit5
    python설치
    datetime
    wikidocs
    모던자바인액션
    디자인패턴의아름다움
    aws에 배포하기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
jun96
[2020-11-26] 콜라츠 추측
상단으로

티스토리툴바