728x90
프로그래머스 _ 코딩 기초 트레이닝 DAY 6 - (5)
출처 - https://school.programmers.co.kr/learn/courses/30/lessons/181923
문제 | 정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다. 각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾습니다. 각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요.
단, 특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다.
입력 #1 | arr = [0,1,2,4,3] queries = [[0,4,2],[0,3,2],[0,2,2]]
출력 #1 | [3,4,-1]
>> 풀이 <<
queries가 이중배열이라서 이중반복문을 활용하여 문제를 풀어야한다. 나중에 리턴해줄 정답배열을 생성한 후 큰 수를 채워넣고, if문을 이용해 가장 작은 arr[i]을 찾아준다.
- 배열에 일정 값 채워넣기 -> Arrays.fill()
- Arrays.fill(array명, 값)을 이용해 배열에 값을 채워넣는다. 이때 가장 큰 수를 채워넣고 싶었으므로 Integer.MAX_VALUE 를 이용해주었다.
- Integer.MAX_VALUE는 정수의 최대값을 표현하는 필드이다. 추가로 Integer.MIN_VALUE는 정수의 최소값을 표현하는 필드이다.
알게된 개념은 위 내용정도이고, 이를 이용해 코드를 작성하였다.
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int[] answer = new int[queries.length];
Arrays.fill(answer, Integer.MAX_VALUE);
for (int i = 0 ; i < queries.length ; i++) {
for (int j = queries[i][0] ; j <= queries[i][1] ; j++) {
if (arr[j] > queries[i][2]) {
if(answer[i] > arr[j]) answer[i] = arr[j];
}
}
if (answer[i] == Integer.MAX_VALUE) answer[i] = -1;
}
return answer;
}
}
'코딩테스트 > 프로그래머스 Lv.0' 카테고리의 다른 글
[프로그래머스] 카운트 업 (IntStream) - JAVA (0) | 2023.07.10 |
---|---|
[프로그래머스] 배열 만들기2 ( Array to List, List to Array ) - JAVA (0) | 2023.07.10 |
[프로그래머스] 수 조작하기1 - JAVA (0) | 2023.07.07 |
[프로그래머스] 등차수열의 특정한 항 더하기 (boolean 배열) - JAVA (0) | 2023.07.04 |
[프로그래머스] 코드 처리하기 - JAVA (0) | 2023.07.04 |