본문 바로가기

기초 공부/코딩테스트 연습

[코딩테스트 #3] k번째 수(정렬) level1 - java

728x90

3번째로 도전한 문제는 

 

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

이 문제다. 

 

문제를 이해하는 것도 쉬웠고 풀이과정도 생각보다 쉬웠다.

 

문제를 간단히 설명하자면 숫자 배열 하나와 2차원 배열 하나를 입력 받는다.

 

배열에 들어가 있는 숫자를 2차원 배열에 들어있는 숫자로 자르고 정렬한 후 몇 번째에 위치한 숫자를 배열에 저장하여 리턴하는 문제다.

 

정렬관련해서는 arraylist에 있는 메소드를 쓰면되니까 너무 편했다. 

우선 for문을 돌려서 arraylist에 자르고 정렬된 숫자들을 넣어놓고

리턴값을 answer[] 배열에 넣어주는 식으로했다.

 

처음에 배열에 크기를 착각하여 오류가 있었는데 그 외에는 어려운 점이 없었다.

import java.util.*;

class Solution {
    public int[] solution(int[] array, int[][] commands) {
        
        
        int[] answer = new int[commands.length];
        
        int i = 0; // 시작
        int j = 0; // 끝
        int k = 0; // 몇번째 숫자
        int a = 0; 
                
        for(int[] cmd : commands){
           
            ArrayList<Integer> arraylist = new ArrayList(); // 값을 저장할 arraylist

            i = cmd[0];
            j = cmd[1];
            k = cmd[2];         
          
            for(int count = i-1; count < j; count++){
                arraylist.add(array[count]);
            }
           
            Collections.sort(arraylist);
            answer[a] = arraylist.get(k-1);
            
            System.out.println(a);
            System.out.println(answer[a]);
            
            a++;
        }

        return answer;
    }
}

위는 내가 작성한 코드다. 

 

마찬가지로 이 문제도 나 이외에 코드를 봤더니 훌륭한 코드들이 많았다. 많이 분발해야겠다.

 

조만간 level2도 한 번 도전해봐야겠다.

반응형