오늘도 알고리즘, 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
아래는 오늘 들은 강의의 필기본이다.
강의를 들으면서 코드 따라치면서 조금씩 활용해보았다.

