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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 풀이 (JAVA)

import java.util.*;
class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int [] answer = new int[commands.length];
        
        for(int i=0; i<commands.length; i++){ // answer 값은 commands 행의 길이만큼 받아야함
            List<Integer> temp = new ArrayList<>();  // 임시로 저장할 숫자 리스트 선언
            for(int j=commands[i][0]-1; j<commands[i][1]; j++){ // 숫자의 인덱스를 반복하여 저장
                temp.add(array[j]);
            }
            Collections.sort(temp); // 리스트 오름차순 정렬
            answer[i] = temp.get(commands[i][2]-1); // K번째 수 저장
            temp.clear(); // 리스트 초기화
        }
        return answer;
    }
}

 

주요 핵심 포인트

1. 이중 for문을 돌려 배열의 저장할 인덱스를 commands의 인수로 받아 리스트에 저장하였다.

2. 리스트를 정렬하고 K번째 수를 뽑은 후 리스트를 초기화하였다.

3. commands의 길이만큼 위 과정을 반복하였다.

개선해야할 사항

:  몇 주전에 풀다가 테스트케이스 몇개를 통과하지 못한 문제였다. 다른 문제를 풀다가 오랜만에 다시 한번 풀어보니 저번에는 떠오르지 않았던 방법이 떠오르게 되었다. 리스트를 사용하지 않고 풀 수 있는 다른 방법이 있는지 탐색해보아야겠다.

'프로그래머스(JAVA)' 카테고리의 다른 글

성격 유형 검사하기  (0) 2023.01.15
체육복  (3) 2022.07.18
구명 보트  (0) 2022.07.16
주차 요금 계산  (0) 2022.07.16
문자열 압축  (0) 2022.07.09

+ Recent posts