[프로그래머스 자바]수열과 구간 쿼리2
문제
1차원 배열 arr 과 2차원 배열 queries가 주어진다
queries 의 원소는 각각 [s,e,k] 이렇게 구성된다
s<=i<=e 인 모든 i에 대해서 k 보다 크면서 가장 작은 arr[i] 갖는 값을 반환하면
답이 존재하지 않는다면 -1을 반환한다.
입출력 예
풀이
난 동적 배열을 이용해서 문제를 풀었다.
일단 queries 를 도는 for문을 만들고 그안에 이제 그 문제 조건을 맞는값을 찾기 위해
arr를 도는 for을 내부에 만들어서 항상 최소값을 temp에 저장하여 arr 돈느 for 문이 끝나면
temp값을 동적 배열에 넣는 형식으로 만들었다.
코드
import java.util.ArrayList;
class Solution {
public int[] solution(int[] arr, int[][] queries) {
ArrayList<Integer> list = new ArrayList<>();
for (int i=0; i< queries.length;i++) {
int temp=1000001;
for (int j=queries[i][0];j<=queries[i][1];j++) {
if (arr[j]>queries[i][2]) {
if (temp>arr[j]) {
temp=arr[j];
}
}
}
if (temp==1000001) {
temp=-1;
}
list.add(temp);
}
int[] result = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
result[i] = list.get(i);
}
return result;
}
}
다른 사람들 코드를 보니 Arrays클래스를 푼것을 보았다
정답값을 저장할 배열의 크기는 queries의 원소갯수를 알기에 fill을 사용해서 queries의 원소 갯수만큼의 배열크기를 지정하고 최대값으로 채우거나 -1로 채워 위에 나와 있는 for문 코드를 이용하여 채우는 방식을 사용하여 좀더 간결하게 코드를
작성할수 있는것 같다
반응형
'자바 문제 풀이 > 기초문제' 카테고리의 다른 글
[프로그래머스 자바]콜라츠 수열 만들기 (0) | 2024.03.09 |
---|---|
[프로그래머스 자바] 배열 만들기2 (0) | 2024.03.04 |
[프로그래머스 자바] 수조작하기 1 (0) | 2024.02.28 |
[프로그래머스 자바] 더 크게 합치기 (0) | 2024.02.24 |
[프로그래머스 자바] 문자 리스트를 문자열로 변환하기 (0) | 2024.02.21 |