Hayden's Archive

[알고리즘] 프로그래머스 : 콜라츠 추측 / 제일 작은 수 제거하기 본문

Algorithm

[알고리즘] 프로그래머스 : 콜라츠 추측 / 제일 작은 수 제거하기

_hayden 2021. 2. 18. 00:53

알고리즘 문제 출처 : programmers.co.kr/learn/courses/30/lessons/12943

 

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

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

programmers.co.kr

 

내가 작성한 코드

굉장히 간단한 문제인데 습관처럼 정수를 int로 선언했다가 문제를 다시 읽고 수 범위를 확인한 후 long으로 바꿨다. 

public class Solution {
	public int solution(int num) {
		int answer = 0;
		long newNum = num;
		while(newNum != 1) {
			if(answer > 500) return -1;
			if(newNum % 2 == 0) {
				newNum /= 2;
				answer++;
			}else {
				newNum = (newNum * 3) + 1;
				answer++;
			}
		}
		return answer;
	}
}

 

 


알고리즘 문제 출처 : programmers.co.kr/learn/courses/30/lessons/12935

 

코딩테스트 연습 - 제일 작은 수 제거하기

정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1

programmers.co.kr

 

내가 작성한 코드

class Solution {
    public int[] solution(int[] arr) {
        int[] answer = {};
        if(arr.length == 1) {
        	answer = new int[1];
        	answer[0] = -1;
        }else {
        	answer = new int[arr.length-1];
        	int minIdx = 0;
        	for(int i=1; i<arr.length; i++) {
        		if(arr[i] < arr[minIdx]) {
        			minIdx = i;
        		}
        	}
        	int idx = 0;
        	for(int i=0; i<arr.length; i++) {
        		if(i == minIdx) continue;
        		answer[idx++] = arr[i];
        	}
        }
        return answer;
    }
}