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 |