TIL(Today I Learned)_데일리루틴_24.11.08.Fri

728x90

데일리루틴 SQL

MySQL 상품 별 오프라인 매출 구하기 정답입니다.
SELECT P.PRODUCT_CODE,
       SUM(P.PRICE * O.SALES_AMOUNT) AS SALES
FROM PRODUCT P
JOIN OFFLINE_SALE O ON P.PRODUCT_ID = O.PRODUCT_ID
GROUP BY P.PRODUCT_CODE
ORDER BY SALES DESC, P.PRODUCT_CODE ASC;​

 

  • PRODUCT 테이블과 OFFLINE_SALE 테이블을 PRODUCT_ID로 JOIN하여 각 상품의 판매가와 판매량을 가져옵니다.
  • SUM(P.PRICE * O.SALES_AMOUNT)로 매출액을 계산하고 PRODUCT_CODE별로 그룹화하여 합계를 구합니다.
  • ORDER BY SALES DESC, P.PRODUCT_CODE ASC를 사용하여 매출액 기준 내림차순으로 정렬하고, 매출액이 같을 경우 PRODUCT_CODE 기준 오름차순으로 정렬합니다.

 


데일리루틴 알고리즘

java 약수의 개수와 덧셈 정답입니다.
class Solution {
    public int solution(int left, int right) {
        int answer = 0;
        
        for (int i = left; i <= right; i++) {
            int divisorCount = getDivisorCount(i);
            if (divisorCount % 2 == 0) {
                answer += i;
            } else {
                answer -= i;
            }
        }
        
        return answer;
    }
    
    private int getDivisorCount(int num) {
        int count = 0;
        for (int i = 1; i * i <= num; i++) {
            if (num % i == 0) {
                count++;
                if (i != num / i) {
                    count++;
                }
            }
        }
        return count;
    }
}

 

  • solution 메서드에서 left부터 right까지 반복문을 돌면서 각 숫자의 약수 개수를 getDivisorCount 메서드를 통해 계산합니다.
  • getDivisorCount 메서드는 주어진 숫자의 약수 개수를 세는 함수입니다. 제곱수가 아닌 경우에는 약수가 쌍으로 존재하므로 두 번 더해줍니다.
  • 짝수 개수의 약수를 가진 숫자는 answer에 더하고, 홀수 개수의 약수를 가진 숫자는 answer에서 뺍니다.
  • 모든 반복이 끝난 후, 최종적으로 answer 값을 반환합니다.

 

728x90
반응형
LIST