TIL 제출하기(매일 23:59 까지)
❤️🔥TIL : Today I Learned
매일 저녁, 공부를 마무리하면서 제출해주세요.
하루에 1%씩만 나아가도 4개월 동안 쌓이면 꽤 덩치가 커진답니다 :)
[TIL을 쓰는 이유]
1. 스스로 어제보다 한 발 더 나아갔다는 것을 자각하기
2. TIL을 쓰기 위해서라도, 오늘 반드시 단 하나라도 배우기
3. 꾸준히 기록을 남기는 습관 가지기
알고리즘 코드카타
가장 작은 수 제거하기 문제 해결하기
가장 작은 수 제거하기 문제 해결하기
이번 포스트에서는 프로그래머스에서 제공하는 가장 작은 수 제거하기 문제를 해결해보겠습니다. 이 문제는 배열에서 가장 작은 수를 제거한 새로운 배열을 반환하는 문제입니다. 만약 배열이 빈 배열이 되면 -1을 포함한 배열을 반환합니다.
문제 설명
정수를 저장한 배열 arr에서 가장 작은 수를 제거한 배열을 리턴하는 함수 solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를 들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴하고, [10]인 경우는 [-1]을 리턴합니다.
제한 조건
- arr은 길이 1 이상인 배열입니다.
- 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
입출력 예
arrreturn
[4,3,2,1] | [4,3,2] |
---|---|
[10] | [-1] |
해결 방법
이 문제를 해결하기 위해서는 다음과 같은 단계를 밟아야 합니다.
- 배열 arr이 길이 1인 경우, [-1]을 반환합니다.
- 배열 arr에서 가장 작은 수를 찾습니다.
- 가장 작은 수를 제외한 새로운 배열을 생성하여 반환합니다.
아래는 이 문제를 해결하기 위한 Java 코드입니다.
import java.util.Arrays;
public class Solution {
public int[] solution(int[] arr) {
if (arr.length == 1) {
return new int[]{-1};
}
// 배열에서 가장 작은 수 찾기
int minValue = Arrays.stream(arr).min().getAsInt();
// 가장 작은 수를 제외한 배열 생성
return Arrays.stream(arr).filter(value -> value != minValue).toArray();
}
public static void main(String[] args) {
Solution sol = new Solution();
System.out.println(Arrays.toString(sol.solution(new int[]{4, 3, 2, 1}))); // [4, 3, 2]
System.out.println(Arrays.toString(sol.solution(new int[]{10}))); // [-1]
}
}
코드 설명
- 배열 arr의 길이가 1인 경우 [-1]을 반환합니다.
- Arrays.stream(arr)을 사용하여 배열 arr의 스트림을 생성하고, min().getAsInt()로 가장 작은 값을 찾습니다.
- filter(value -> value != minValue)를 사용하여 가장 작은 값을 제외한 스트림을 생성하고, 이를 배열로 변환하여 반환합니다.
SQL 코드카타
주어진 문제를 해결하기 위해, FIRST_HALF 테이블에서 아이스크림 맛을 총주문량을 기준으로 내림차순 정렬하고, 총주문량이 같다면 출하 번호를 기준으로 오름차순 정렬하여 조회하는 SQL 쿼리를 작성해보겠습니다.
테이블 구조
- SHIPMENT_ID: INT, 출하 번호
- FLAVOR: VARCHAR, 아이스크림 맛
- TOTAL_ORDER: INT, 상반기 아이스크림 총주문량
예시 데이터
SHIPMENT_IDFLAVORTOTAL_ORDER
101 | chocolate | 3200 |
---|---|---|
102 | vanilla | 2800 |
103 | mint_chocolate | 1700 |
104 | caramel | 2600 |
105 | white_chocolate | 3100 |
106 | peach | 2450 |
107 | watermelon | 2150 |
108 | mango | 2900 |
109 | strawberry | 3100 |
110 | melon | 3150 |
111 | orange | 2900 |
112 | pineapple | 2900 |
SQL 쿼리
SELECT
FLAVOR
FROM
FIRST_HALF
ORDER BY
TOTAL_ORDER DESC,
SHIPMENT_ID ASC;
쿼리 설명
- SELECT 문: FLAVOR 컬럼을 선택합니다.
- FROM 문: FIRST_HALF 테이블에서 데이터를 가져옵니다.
- ORDER BY 문:
- TOTAL_ORDER를 기준으로 내림차순 정렬합니다 (DESC).
- TOTAL_ORDER가 같은 경우 SHIPMENT_ID를 기준으로 오름차순 정렬합니다 (ASC).
결과
위의 SQL 쿼리를 실행하면, 주어진 예시 데이터에 대해 다음과 같은 결과가 반환됩니다:
FLAVOR
chocolate |
---|
melon |
white_chocolate |
strawberry |
mango |
orange |
pineapple |
vanilla |
caramel |
peach |
watermelon |
mint_chocolate |
이 쿼리를 통해 주어진 조건에 맞게 데이터를 정확하게 정렬하여 조회할 수 있습니다.
느낀점
힘들다
'TIL > 스파르타 코드카타' 카테고리의 다른 글
[내일배움캠프] 사전캠프 코드카타 31번 문제 (0) | 2024.09.03 |
---|---|
[내일배움캠프] 사전캠프 코드카타 30번 문제 (0) | 2024.09.03 |
[내일배움캠프] 사전캠프 코드카타 15번 문제 (0) | 2024.08.10 |
[내일배움캠프] 사전캠프 코드카타 14번 문제 (0) | 2024.08.10 |
[내일배움캠프] 사전캠프 코드카타 13번 문제 (0) | 2024.08.10 |