TIL 제출하기(매일 23:59 까지)
❤️🔥TIL : Today I Learned
매일 저녁, 공부를 마무리하면서 제출해주세요.
하루에 1%씩만 나아가도 4개월 동안 쌓이면 꽤 덩치가 커진답니다 :)
[TIL을 쓰는 이유]
1. 스스로 어제보다 한 발 더 나아갔다는 것을 자각하기
2. TIL을 쓰기 위해서라도, 오늘 반드시 단 하나라도 배우기
3. 꾸준히 기록을 남기는 습관 가지기
알고리즘 코드카타
두 배열의 내적 구하기 문제 해결하기
이번 포스트에서는 주어진 두 1차원 정수 배열 a와 b의 내적을 구하는 문제를 해결해보겠습니다. 이 문제는 배열의 각 요소를 곱한 후 그 합을 구하는 문제입니다.
문제 설명
길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 리턴하도록 solution 함수를 완성해주세요.
이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)
제한사항
- a, b의 길이는 1 이상 1,000 이하입니다.
- a, b의 모든 수는 -1,000 이상 1,000 이하입니다.
입출력 예
abresult
[1,2,3,4] | [-3,-1,0,2] | 3 |
---|---|---|
[-1,0,1] | [1,0,-1] | -2 |
입출력 예 설명
- 예제 1: a와 b의 내적은 1*(-3) + 2*(-1) + 3*0 + 4*2 = 3 입니다.
- 예제 2: a와 b의 내적은 (-1)*1 + 0*0 + 1*(-1) = -2 입니다.
해결 방법
이 문제를 해결하기 위해서는 다음과 같은 단계를 밟아야 합니다.
- 배열 a와 b의 길이가 같으므로, 반복문을 통해 각 인덱스의 요소들을 곱하고 이를 합산합니다.
- 최종 합산된 값을 반환합니다.
아래는 이 문제를 해결하기 위한 Java 코드입니다.
public class Solution {
public int solution(int[] a, int[] b) {
int sum = 0;
for (int i = 0; i < a.length; i++) {
sum += a[i] * b[i];
}
return sum;
}
public static void main(String[] args) {
Solution sol = new Solution();
System.out.println(sol.solution(new int[]{1, 2, 3, 4}, new int[]{-3, -1, 0, 2})); // 3
System.out.println(sol.solution(new int[]{-1, 0, 1}, new int[]{1, 0, -1})); // -2
}
}
코드 설명
- int sum = 0;을 선언하여 내적의 합을 저장할 변수를 초기화합니다.
- for 루프를 사용하여 배열 a와 b의 각 요소를 곱하고 sum에 더합니다.
- 루프가 종료되면 최종 합산된 sum을 반환합니다.
SQL 코드카타
주어진 문제를 해결하기 위해, BOOK 테이블과 BOOK_SALES 테이블을 조인하여 2022년 1월의 카테고리별 도서 판매량을 합산하는 SQL 쿼리를 작성하겠습니다. 결과는 카테고리명을 기준으로 오름차순 정렬합니다.
테이블 구조
- BOOK
- BOOK_ID: INTEGER, 도서 ID
- CATEGORY: VARCHAR(N), 카테고리 (경제, 인문, 소설, 생활, 기술)
- AUTHOR_ID: INTEGER, 저자 ID
- PRICE: INTEGER, 판매가 (원)
- PUBLISHED_DATE: DATE, 출판일
- BOOK_SALES
- BOOK_ID: INTEGER, 도서 ID
- SALES_DATE: DATE, 판매일
- SALES: INTEGER, 판매량
예시 데이터
BOOK 테이블:
BOOK_IDCATEGORYAUTHOR_IDPRICEPUBLISHED_DATE
1 | 인문 | 1 | 10000 | 2020-01-01 |
---|---|---|---|---|
2 | 경제 | 1 | 9000 | 2021-02-05 |
3 | 경제 | 2 | 9000 | 2021-03-11 |
BOOK_SALES 테이블:
BOOK_IDSALES_DATESALES
1 | 2022-01-01 | 2 |
---|---|---|
2 | 2022-01-02 | 3 |
1 | 2022-01-05 | 1 |
2 | 2022-01-20 | 5 |
2 | 2022-01-21 | 6 |
3 | 2022-01-22 | 2 |
2 | 2022-02-11 | 3 |
SQL 쿼리
SELECT
B.CATEGORY,
SUM(S.SALES) AS TOTAL_SALES
FROM
BOOK B
JOIN
BOOK_SALES S
ON
B.BOOK_ID = S.BOOK_ID
WHERE
S.SALES_DATE BETWEEN '2022-01-01' AND '2022-01-31'
GROUP BY
B.CATEGORY
ORDER BY
B.CATEGORY ASC;
쿼리 설명
- SELECT 문: B.CATEGORY와 SUM(S.SALES) AS TOTAL_SALES를 선택합니다. SUM(S.SALES)는 각 카테고리별 총 판매량을 계산합니다.
- FROM 문: BOOK 테이블과 BOOK_SALES 테이블을 선택합니다.
- JOIN 문: BOOK 테이블과 BOOK_SALES 테이블을 BOOK_ID를 기준으로 조인합니다.
- WHERE 문: SALES_DATE가 2022년 1월인 데이터만 필터링합니다 (2022-01-01부터 2022-01-31까지).
- GROUP BY 문: CATEGORY별로 그룹화합니다.
- ORDER BY 문: CATEGORY를 기준으로 오름차순 정렬합니다.
결과
위의 SQL 쿼리를 실행하면 주어진 예시 데이터에 대해 다음과 같은 결과를 얻을 수 있습니다:
CATEGORYTOTAL_SALES
경제 | 16 |
---|---|
인문 | 3 |
이와 같이, 2022년 1월의 카테고리별 도서 판매량을 정확하게 합산하고 카테고리명을 기준으로 오름차순 정렬할 수 있습니다.
느낀점
'TIL > 스파르타 코드카타' 카테고리의 다른 글
[내일배움캠프] 사전캠프 코드카타 34번 문제 (0) | 2024.09.03 |
---|---|
[내일배움캠프] 사전캠프 코드카타 33번 문제 (0) | 2024.09.03 |
[내일배움캠프] 사전캠프 코드카타 31번 문제 (0) | 2024.09.03 |
[내일배움캠프] 사전캠프 코드카타 30번 문제 (0) | 2024.09.03 |
[내일배움캠프] 사전캠프 코드카타 29번 문제 (0) | 2024.09.03 |