TIL(Today I Learned)_데일리루틴_24.12.01.Sun

728x90

데일리루틴 SQL

MySQL 특정 옵션이 포함된 자동차 리스트 구하기 정답입니다.

SELECT CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%네비게이션%'
ORDER BY CAR_ID DESC

 

  • WHERE OPTIONS LIKE '%네비게이션%' : OPTIONS 컬럼에서 네비게이션 문자열을 포함하는 레코드를 찾습니다. %는 0개 이상의 문자와 매칭되는 와일드카드입니다.
  • ORDER BY CAR_ID DESC : CAR_ID를 기준으로 내림차순 정렬합니다.

 


데일리루틴 알고리즘

Java 과일 장수 정답입니다.

import java.util.*;

class Solution {
    public int solution(int k, int m, int[] score) {
        int answer = 0;
        
        Arrays.sort(score);
        int n = score.length;
        
        for(int i = n-m; i >= 0; i -= m) {
            answer += score[i] * m;
        }
        return answer;
    }
}

 

  • Arrays.sort(score);
    • 주어진 점수 배열을 오름차순으로 정렬합니다. 이렇게 하면 낮은 점수부터 높은 점수까지 정렬된 상태가 됩니다.
  • int n = score.length;
    • 배열의 길이를 n에 저장하여 이후 계산에서 반복적으로 호출하지 않도록 최적화합니다.
  • for (int i = n - m; i >= 0; i -= m)
    • 배열의 뒤에서부터 m개씩 묶어 상자를 구성합니다.
    • n - m에서 시작하는 이유는 뒤에서 m개씩 묶을 때의 첫 번째 상자 시작 위치를 계산하기 위함입니다.
    • i -= m으로 상자 단위로 이동하며 반복을 실행합니다.
  • answer += score[i] * m;
    • 각 상자에서 가장 낮은 점수는 score[i]입니다.
    • 해당 상자의 가격은 score[i] * m이므로 이를 answer에 누적합니다.
  • return answer;
    • 최종 계산된 최대 이익을 반환합니다.

 

728x90
반응형
LIST