5/21 TIL

·2024년 5월 21일

오늘도 알고리즘, sql을 풀고 강의를 들었다.

오늘의 알고리즘 문제는 제일 작은 수 제거 입니다.

정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 
단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 
예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.

제한 조건
arr은 길이 1 이상인 배열입니다.
인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.

배열 길이가 1이면 리턴할 배열이 빈 배열이 됩니다.
따라서 -1을 반환해야하므로 먼저 if로 걸러주었다.

for문을 돌려서 temp_int에 배열에서 가장 작은 수를 저장하고,
다음 for문에서 temp_int를 제외한 나머지 수를 answer에 저장한다.

제출한 코드는 아래와 같다.

class Solution {
    public int[] solution(int[] arr) {
        int[] answer = new int[arr.length - 1];
        int temp_int = arr[0];
        int index = 0;
        
        if (arr.length == 1) {
            return new int[]{-1};
        }
        
        for (int i = 0; i < arr.length; i++){
            if (arr[i] < temp_int) {
                temp_int = arr[i];
            }
        }
        
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != temp_int) {
                answer[index++] = arr[i];
            }
        }
        
        return answer;
    }
}

오늘의 SQL 문제는 '자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기'였다.

문제는 아래와 같다.

CAR_RENTAL_COMPANY_CAR 테이블에서 '통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차가 자동차 종류 별로 몇 대인지 출력하는 SQL문을 작성해주세요. 이때 자동차 수에 대한 컬럼명은 CARS로 지정하고, 결과는 자동차 종류를 기준으로 오름차순 정렬해주세요.

CAR_TYPE, 자동차 종류의 갯수를 출력해야 하므로, CAR_TYPE, COUNT(*)를 SELECT한다.
OPTIONS에 통풍시트, 열선시트, 가죽시트가 들어가는 절을 골라야 하므로
OPTIONS LIKE "%통풍시트%" OR OPTIONS LIKE "%열선시트%" OR OPTIONS LIKE "%가죽시트%"를 적어준다.
COUNT라는 집계함수를 썼으므로 GROUP BY로 묶어주고, ORDER BY로 정렬해준다.

제출한 코드는 아래와 같다.

SELECT CAR_TYPE, COUNT(*) AS CARS FROM CAR_RENTAL_COMPANY_CAR WHERE OPTIONS LIKE "%통풍시트%" OR OPTIONS LIKE "%열선시트%" OR OPTIONS LIKE "%가죽시트%" GROUP BY CAR_TYPE ORDER BY CAR_TYPE

아래는 오늘 들은 강의의 필기본이다.
강의를 들으면서 코드 따라치면서 조금씩 활용해보았다.


profile
응애개발자

0개의 댓글