본문 바로가기
Algorithm/구현

[프로그래머스] 코딩테스트 고득점 Kit - 정렬 (JAVA)

by 루시킴 2021. 10. 1.

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

 

코딩테스트 연습 - K번째수

[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]

programmers.co.kr

int[][] a -> a.length : a의 길이

Arrays.copyOfRange(array,start,end) : array 배열의 start부터 end인덱스 전까지 복사

Arrays.sort(array) : array 오름차순 정렬

Arrays.sort(array,start,end) : 배열의 start부터 end전까지만 오름차순 정렬

Arrays.sort(array,Collections.reverseOrder()) : String배열 내림차순 정렬. Integer배열도 가능 (단 int배열 불가능)

import java.util.*;

class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int [commands.length];
        //Arrays.copyOfRange(array, start, 끝인덱스 (포함x)); 
        for(int i=0; i<commands.length; i++){
            int[] tmp = Arrays.copyOfRange(array,commands[i][0]-1,commands[i][1]);
            Arrays.sort(tmp);
            answer[i]=tmp[commands[i][2]-1];
                
        }

        return answer;
    }
}

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

 

코딩테스트 연습 - 가장 큰 수

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰

programmers.co.kr

String.valueOf(a) : int형 a를 String으로 변환 (55 -> "55")

Arrays.sort(result,(s1,s2)->(s2+s1).compareTo(s1+s2)) : s2+s1가 s1+s2보다 더 크면 자리바꿈 

import java.util.*;

class Solution {
    public String solution(int[] numbers) {
        String answer = "";
        String[] result = new String[numbers.length];
        for(int i=0; i<numbers.length; i++){
            result[i]=String.valueOf(numbers[i]);
        }
        Arrays.sort(result,(s1,s2)->(s2+s1).compareTo(s1+s2));
        //(b+a).compareTo(a+b) 을 했을 경우 'b+a'가 더 크다면 자리를 바꿈
        if(result[0].equals("0")) return "0";
        for(String s : result){
            answer+=s;
        }

        return answer;
    }
}

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

 

코딩테스트 연습 - H-Index

H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표

programmers.co.kr

import java.util.*;

class Solution {
    public int solution(int[] citations) {
        int size = citations.length;
        Arrays.sort(citations);
        //6 5 3 1 0
        for(int i=0; i<size; i++){
            if(citations[i]>=size-i) return size-i;
        }
        return 0;
    }
}

댓글