728x90
데일리루틴 SQL
MySQL 즐겨찾기가 가장 많은 식당 정보 출력하기 정답입니다.
SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
WHERE (FOOD_TYPE, FAVORITES) IN (
SELECT FOOD_TYPE, MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE
)
ORDER BY FOOD_TYPE DESC
- SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
- REST_INFO 테이블에서 FOOD_TYPE(음식 유형), REST_ID(식당 ID), REST_NAME(식당 이름), FAVORITES(즐겨찾기 수) 컬럼을 선택합니다.
- FROM REST_INFO
- 데이터를 가져올 대상 테이블을 지정합니다. 여기서는 REST_INFO라는 테이블입니다.
- WHERE (FOOD_TYPE, FAVORITES) IN (
- 특정 조건을 만족하는 행만 선택하는 WHERE 절입니다. (FOOD_TYPE, FAVORITES)라는 튜플을 통해 각 음식 유형에 대해 즐겨찾기 수가 최댓값인 경우만을 포함시키는 조건을 설정합니다.
- SELECT FOOD_TYPE, MAX(FAVORITES)
- 서브쿼리로 REST_INFO 테이블에서 각 음식 유형(FOOD_TYPE)별로 **가장 많은 즐겨찾기 수(MAX(FAVORITES))**를 찾습니다. 이 서브쿼리는 각 FOOD_TYPE에 대해 최고 즐겨찾기 수를 갖는 값을 반환합니다.
- FROM REST_INFO
- 서브쿼리에서도 동일하게 REST_INFO 테이블을 대상으로 사용합니다.
- GROUP BY FOOD_TYPE
- 각 FOOD_TYPE별로 그룹을 만들고, 각 그룹에서 MAX(FAVORITES)를 찾습니다. 즉, 음식 유형별로 가장 많은 즐겨찾기 수를 가지는 값을 구하는 역할입니다.
- ORDER BY FOOD_TYPE DESC
- 최종 결과를 FOOD_TYPE 기준으로 내림차순(DESC)으로 정렬합니다. 즉, 음식 유형이 알파벳 역순으로 정렬되어 출력됩니다.
데일리루틴 알고리즘
Java K번째수 정답입니다.
import java.util.Arrays;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length]; // 결과를 저장할 배열
for (int c = 0; c < commands.length; c++) {
int i = commands[c][0];
int j = commands[c][1];
int k = commands[c][2];
// array의 i번째부터 j번째까지 자르기
int[] slicedArray = Arrays.copyOfRange(array, i - 1, j);
// 자른 배열 정렬
Arrays.sort(slicedArray);
// 정렬된 배열의 k번째 값 찾기
answer[c] = slicedArray[k - 1];
}
return answer;
}
}
- 입력 배열 초기화:
- answer 배열을 commands.length 크기로 초기화합니다. 이는 각 명령의 결과를 저장합니다.
- 명령 순회:
- commands 배열의 각 원소에 대해 i, j, k 값을 추출합니다.
- i와 j는 1부터 시작하는 인덱스이므로, Arrays.copyOfRange를 사용할 때 i-1을 시작 인덱스로 설정합니다.
- 배열 슬라이싱 및 정렬:
- Arrays.copyOfRange 메서드를 사용하여 주어진 범위 [i-1, j)의 배열을 자릅니다.
- 자른 배열을 Arrays.sort 메서드로 정렬합니다.
- k번째 값 찾기:
- 정렬된 배열에서 k-1 번째 값을 찾아 answer 배열에 저장합니다.
- 결과 반환:
- 최종적으로 answer 배열을 반환합니다.
728x90
반응형
LIST
'Sparta > 데일리루틴' 카테고리의 다른 글
TIL(Today I Learned)_데일리루틴_24.11.25.Mon (0) | 2024.11.25 |
---|---|
TIL(Today I Learned)_데일리루틴_24.11.24.Sun (0) | 2024.11.24 |
TIL(Today I Learned)_데일리루틴_24.11.22.Fri (0) | 2024.11.22 |
TIL(Today I Learned)_데일리루틴_24.11.21.Thr (0) | 2024.11.21 |
TIL(Today I Learned)_데일리루틴_24.11.20.Wed (0) | 2024.11.20 |