Algorithm/Problem_프로그래머스

프로그래머스(정수 내림차순으로 배치하기, 정수 제곱근 판별, 제일 작은 수 제거하기) - Java

uyoo 2020. 5. 29. 15:34

[정수 내림차순으로 배치하기]

https://programmers.co.kr/learn/courses/30/lessons/12933

 

코딩테스트 연습 - 정수 내림차순으로 배치하기

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이��

programmers.co.kr

 

* 로직

  • 문자열로 변환한 뒤, 각각의 수를 리스트에 넣는다
  • 리스트를 내림차순 정렬한다
  • 정렬된 문자를 값으로 변환한다
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

class Solution {
    public long solution(long n) {
        long answer = 0;
        ArrayList<Integer> list = new ArrayList<>();
        String str = String.valueOf(n);
        for(int i=0; i<str.length(); ++i) {
            list.add(Integer.parseInt(str.substring(i, i+1)));
        }

        Collections.sort(list, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2-o1;
            }
        });

        StringBuilder sb = new StringBuilder();
        for(int value : list) {
            sb.append(value);
        }
        answer = Long.parseLong(sb.toString());
        return answer;
    }
}

 

 

[정수 제곱근 판별]

https://programmers.co.kr/learn/courses/30/lessons/12934

 

코딩테스트 연습 - 정수 제곱근 판별

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함�

programmers.co.kr

 

* 로직

  • Math.sqrt를 통해 나온 값(value)를 이용한다
  • 만약 value*value == n이라면 -> value+1 제곱값을 리턴한다
  • 같지 않다면 -> -1을 리턴한다
class Solution {
    public long solution(long n) {
        long answer = 0;
        long value = (long) Math.sqrt(n);
        if(value*value == n) {
            answer = (value+1) * (value+1);
        }
        else answer = -1;

        return answer;
    }
}

 

 

[제일 작은 수 제거하기]

 

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

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

programmers.co.kr

 

* 로직

  • 주어진 배열에서 가장 작은 값을 가지는 인덱스를 저장한다
  • 만약 주어진 배열의 사이즈가 1이라면 -> -1을 리턴한다

  • 그렇지 않다면 -> answer의 사이즈는 (주어진 배열의 사이즈-1)이고, 사전에 저장한 인덱스를 제외한 값을 answer에 넣어준다
import java.util.Arrays;

class Solution {
    public int[] solution(int[] arr) {
        int[] answer = {};
        int idx = 0;
        int min = Integer.MAX_VALUE;
        for(int i=0; i<arr.length; ++i) {
            if(min > arr[i]) {
                min = arr[i];
                idx = i;
            }
        }

        if(arr.length == 1) {
            answer = new int[1];
            answer[0] = -1;
        }

        else {
            answer = new int[arr.length-1];
            int index=0;
            for(int i=0; i<arr.length; ++i) {
                if(i != idx) {
                    answer[index++] = arr[i];
                }
            }
        }

        return answer;
    }
}