TIL(Today I Learned)_데일리루틴_24.11.25.Mon

728x90

데일리루틴 SQL

MySQL 5월 식품들의 총매출 조회하기 정답입니다.

SELECT P.PRODUCT_ID, P.PRODUCT_NAME, SUM(O.AMOUNT*P.PRICE) TOTAL_SALES
FROM FOOD_PRODUCT P
JOIN FOOD_ORDER O ON P.PRODUCT_ID = O.PRODUCT_ID
WHERE DATE_FORMAT(O.PRODUCE_DATE, '%Y-%m') = '2022-05'
GROUP BY P.PRODUCT_ID
ORDER BY TOTAL_SALES DESC, P.PRODUCT_ID

 

  • SELECT P.PRODUCT_ID, P.PRODUCT_NAME, SUM(O.AMOUNT * P.PRICE) AS TOTAL_SALES
    • PRODUCT_ID, PRODUCT_NAME, 그리고 주문 수량과 가격의 곱을 합산한 총매출(TOTAL_SALES)을 출력합니다.
  • FROM FOOD_PRODUCT P
    • FOOD_PRODUCT 테이블에서 데이터를 가져옵니다. 별칭으로 P를 지정합니다.
  • JOIN FOOD_ORDER O ON P.PRODUCT_ID = O.PRODUCT_ID
    • FOOD_PRODUCT와 FOOD_ORDER 테이블을 PRODUCT_ID를 기준으로 결합합니다.
  • WHERE DATE_FORMAT(O.PRODUCE_DATE, '%Y-%m') = '2022-05'
    • FOOD_ORDER의 생산일자가 2022-05인 데이터만 선택합니다.
  • GROUP BY P.PRODUCT_ID, P.PRODUCT_NAME
    • PRODUCT_ID와 PRODUCT_NAME별로 데이터를 그룹화합니다.
  • ORDER BY TOTAL_SALES DESC, P.PRODUCT_ID ASC
    • 총매출(TOTAL_SALES) 기준으로 내림차순 정렬하고, 총매출이 같으면 PRODUCT_ID 기준으로 오름차순 정렬합니다.

 


데일리루틴 알고리즘

Java 가장 가까운 같은 글자 정답입니다.

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[s.length()]; // 결과 배열

        for (int i = 0; i < s.length(); i++) {
            char currentChar = s.charAt(i); // 현재 문자
            int closestDistance = -1; // 초기값 -1

            // i 이전의 모든 위치 탐색
            for (int j = i - 1; j >= 0; j--) {
                if (s.charAt(j) == currentChar) {
                    closestDistance = i - j; // 현재 위치와의 거리
                    break; // 가장 가까운 거리만 찾으면 종료
                }
            }

            answer[i] = closestDistance; // 결과 저장
        }

        return answer;
    }
}

 

  • public int[] solution(String s) : 메서드 정의입니다. 문자열 s를 입력받아, 정수 배열을 반환하는 메서드입니다.
  • int[] answer = new int[s.length()]; : 결과 배열을 선언하고, 문자열의 길이만큼의 크기를 갖도록 초기화합니다.
  • for (int i = 0; i < s.length(); i++) { : 문자열의 각 문자를 순회하는 반복문을 시작합니다.
  • char currentChar = s.charAt(i); : 현재 문자를 가져옵니다.
  • int closestDistance = -1; : 현재 문자의 가장 가까운 동일 문자의 거리를 저장할 변수를 -1로 초기화합니다.
  • for (int j = i - 1; j >= 0; j--) { : 현재 문자 이전의 모든 문자를 탐색하는 반복문입니다.
  • if (s.charAt(j) == currentChar) { : 이전 문자 중 현재 문자와 동일한 문자를 찾았는지 확인합니다.
  • closestDistance = i - j; : 동일한 문자가 있다면, 그 문자와 현재 문자 간의 거리를 계산합니다.
  • break; : 가장 가까운 동일한 문자를 찾으면 탐색을 중지합니다.
  • answer[i] = closestDistance; : 찾은 거리를 결과 배열에 저장합니다.
  • } : 외부 반복문 종료.
  • return answer; : 최종 결과 배열을 반환합니다.

 

728x90
반응형
LIST