728x90
반응형
프로그래머스 수열과 구간 2
https://school.programmers.co.kr/learn/courses/30/lessons/181923
public static int[] solution(int[] arr, int[][] queries) {
int[] answer = new int[queries.length];
// s = queries[i][0], e = queries[i][1], k = queries[i][2];
// arr[queries[i][0] ~ arr[queries[i][1]
for (int i = 0; i < queries.length; i++) {
int min = 1000000;
for (int j = queries[i][0]; j <= queries[i][1]; j++) {
if (arr[j] > queries[i][2] && min > arr[j])
min = arr[j];
}
if (min == 1000000) answer[i] = -1;
else answer[i] = min;
}
return answer;
}
휴 진짜 어렵게 풀었다
어려워 보이진 않는데 졸리기도 하고 댁알 안돌아갈 때 풀어서 그런지 힘들었다.
주어진 배열 arr[]와 queries[][]에서
queries의 각 요소는 query[s, e, k]로 구성되어있고
s <= i <= e 인 i 중
k보다 큰 arr[i] 중 가장 작은 값을 반환하는 문제이다.
처음엔 문제를 잘못 해석해서
조건이 s <= arr[i] <= e && k > arr[i] 인줄 알고 풀었는데 어쩐지 풀다보니까 이상하더라 ㅋ
아무튼
for문으로 queries의 각 요소에 접근한 후
최소값을 구해야하므로 min에 arr[i] 값 범위 중 최대값인 1,000,000을 일단 저장했다.
그리고 for문을 또 만들어 초기값으로 s값인 queries[i][0], 조건값으로 e값인 queries[i][1]을 주었다.
그리고 arr[j]를 돌며 k값인 queries[i][2]보다 큰 경우 현재 min값보다 작은지 확인 후
작을 경우 min값에 arr[j]를 넣어주었다.
생각하기엔 쉬웠는데 코드를 작성하다보니 생각보단 복잡했다.
처음에 코드 실행 후 성공해서 제출했더니 몇개는 통과하고 몇개는 실패했다...
아무튼 다시 수정해서 성공함 푸하하
728x90
반응형
'멋쟁이 사자처럼 > TIL' 카테고리의 다른 글
230601 7주 3일차 TIL. 프로그래머스 배열 만들기 4 (0) | 2023.06.01 |
---|---|
230531 7주 2일차 TIL. 컬렉션, DB 대소문자 구분, JDBC, 예외처리 (0) | 2023.05.31 |
230526 6주 5일차 TIL. 추상클래스와 인터페이스, 제네릭, 컬렉션, 예외처리 (0) | 2023.05.26 |
230524 6주 4일차 TIL. SQL, BETWEEN, COUNT (0) | 2023.05.25 |
230524 6주 3일차. 템플릿 메소드 패턴. 의존성 주입 DI (1) | 2023.05.24 |