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도 한 번 도전해봐야겠다.
반응형
'기초 공부 > 코딩테스트 연습' 카테고리의 다른 글
[코딩테스트 #5] 백준 10828 스택 - python (0) | 2020.07.16 |
---|---|
[코딩테스트 #4] 전화번호 목록(해시) level2 - java (0) | 2020.02.18 |
[코딩테스트 #2] 완주하지 못한 선수(해시) level1 - java (0) | 2020.02.06 |
[코딩테스트 #1] 문자열 압축(2020 KAKAO BLIND RECRUITMENT) level1 - java (0) | 2020.02.02 |