'6월 4일' 서른다섯 번째 기록 [TIL]

가은·2024년 6월 4일
0

I Learned [본 캠프]

목록 보기
56/135
post-thumbnail

👩‍🏫 오늘의 출석

❓서른다섯 번째, 9 to 9을 해 본 소감❓

오늘부터 새로운 팀 프로젝트가 시작되었다! 오랜만에 거의 하루 종일 팀원들과 이야기를 하며 시간을 보낸 것 같다. 다행히 모두들 열심히 프로젝트에 임해주어 기분 좋게 시작을 할 수 있었다! 시간이 조금 촉박하다는 생각이 들기도 하지만 잘 완성했으면 좋겠다!

📑오늘 학습한 내용

🧩오늘의 알고리즘 : 최소직사각형 🧩

문제 : 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다.

아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다.

명함 번호가로 길이세로 길이
16050
23070
36030
48040

가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때의 지갑 크기는 4000(=80 x 50)입니다.

모든 명함의 가로 길이와 세로 길이를 나타내는 2차원 배열 sizes가 매개변수로 주어집니다. 모든 명함을 수납할 수 있는 가장 작은 지갑을 만들 때, 지갑의 크기를 return 하도록 solution 함수를 완성해주세요.


제한사항

  • sizes의 길이는 1 이상 10,000 이하입니다.
    • sizes의 원소는 [w, h] 형식입니다.
    • w는 명함의 가로 길이를 나타냅니다.
    • h는 명함의 세로 길이를 나타냅니다.
    • w와 h는 1 이상 1,000 이하인 자연수입니다.
class Solution {
    public int solution(int[][] sizes) {
        int max_row = 0;
        int max_col = 0;
        
        for(int i = 0; i < sizes.length; i++) {
            if(sizes[i][0]<sizes[i][1]) {
                int tmp = sizes[i][0];
                sizes[i][0] = sizes[i][1];
                sizes[i][1] = tmp;
            }
            if(max_row<sizes[i][0]) max_row = sizes[i][0];
            if(max_col<sizes[i][1]) max_col = sizes[i][1];
        }
        return max_col*max_row;
    }
}

🧩 오늘의 SQL : 가격대 별 상품 개수 구하기 🧩

문제 : PRODUCT 테이블에서 만원 단위의 가격대 별로 상품 개수를 출력하는 SQL 문을 작성해주세요. 이때 컬럼명은 각각 컬럼명은 PRICE_GROUP, PRODUCTS로 지정해주시고 가격대 정보는 각 구간의 최소금액(10,000원 이상 ~ 20,000 미만인 구간인 경우 10,000)으로 표시해주세요. 결과는 가격대를 기준으로 오름차순 정렬해주세요.

SELECT (
    CASE 
        WHEN PRICE < 10000 THEN 0
        ELSE TRUNCATE(PRICE, -4)
        END) AS PRICE_GROUP, COUNT(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP

CASE WHEN

CASE
	WHEN 조건
    THEN '반환 값'
    WHEN 조건
    THEN '반환 값'
    ELSE 'WHEN 조건에 해당 안 되는 경우 반환할 값'
END  
  • WHEN과 THEN은 한쌍이어야 함
  • WHEN과 THEN은 다수가 존재할 수 있음
  • ELSE가 존재하면 모든 조건에 해당하지 않는 경우에 반환 값을 설정할 수 있음
  • ELSE가 존재하지 않고, 조건에 맞지 않아서 반환 값이 없으면 NULL를 반환함

TRUNCATE(숫자,버릴 자릿수)

SELECT TRUNCATE(1234.56789, 1) FROM DUAL; -- 1234.5
SELECT TRUNCATE(1234.56789, 3) FROM DUAL; -- 1234.567
SELECT TRUNCATE(1234.56789, -1) FROM DUAL; -- 1230
SELECT TRUNCATE(1234.56789, -2) FROM DUAL; -- 1200
  • 숫자를 버릴 자릿수 아래로 버림
  • 반드시 버릴 자릿수를 명시해 주어야 함

오전에는 뉴스 피드 발제가 있었고 이후에는 팀원들과 아이디어와 기본적인 ERD, API 명세서 작성, 웹 프레임워크 등을 작성하며 시간을 보내고 초기 세팅에 대해 튜터님과 이야기도 나누며 시간을 보냈다.

0개의 댓글