알쓸코지
article thumbnail

문제

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

 

프로그래머스

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

programmers.co.kr

문제 설명

정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다. 각 query마다 순서대로 sie인 모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾습니다. 각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요. 단, 특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다.

제한사항

  • 1 ≤ arr의 길이 ≤ 1,000
    • 0 ≤ arr의 원소 ≤ 1,000,000
  • 1 ≤ queries의 길이 ≤ 1,000
    • 0 ≤ se < arr의 길이
    • 0 ≤ k ≤ 1,000,000

입출력 예

arr queries result
[0, 1, 2, 3, 4] [[0, 4, 2], [0, 3, 2], [0, 2, 2] [3, 4, -1]

 

Code

def solution(arr, queries):
    answer = []
    for start, end, k in queries:
        min_val = 1000001

        for idx in range(start, end + 1):
            if arr[idx] > k:
                min_val = min(min_val, arr[idx])

        min_val = min_val if min_val != 1000001 else -1
        answer.append(min_val)

    return answer
  • arr[start]부터 arr[end]까지 루프를 돌면서 arr[idx]의 값이 k보다 크면, arr[idx] 값과 min_val 중 더 작은 값으로 min_val를 갱신한다.
  • min_val 값 갱신이 모두 끝난 뒤, min_val 값이 초깃값과 다르면 min_val 값을, 아니면 -1answer에 넣어준다.

profile

알쓸코지

@chocoji

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!