전체 글
-
[프로그래머스] 섬 연결하기알고리즘 2023. 2. 15. 20:07
문제 섬을 연결하는데 cost가 있고, 최소비용을 구해야한다 -> 전형적인 크루스칼 문제이다 풀이 1. 먼저 " n개의 섬을 최소의 비용으로 서로 통행할 수 있게 만든다 " 에서 크루스칼 문제임을 알 수 있었다 2. costs 에 주어지는 값들은 [[x1,y1,cost], [x2,y2,cost] , ... , [xn,yn,cost]] 이렇게 생각하면 쉽다. 3. cost 기준으로 edges를 정렬한후 같은 집합에 속하지 않는 값들의 합을 구해서 반환하면 된다. 코드 # 크루스칼 def solution(n, costs): parent = [i for i in range(n+1)] def find(x): if x != parent[x]: parent[x] = find(parent[x]) return pare..
-
[프로그래머스] 가격대 별 상품 개수 구하기SQL-프로그래머스 2023. 2. 15. 14:44
문제 배운 점 - truncate 함수를 배웠다. -> truncate(숫자, 버릴 자릿수 ) -> truncate( PRICE, -4 ) : 만자리에서 버린다는 의미이다 주의할점, 버릴 자릿수를 명시하고 +,- 체크 잘하기 코드 # 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; select truncate(PRICE,-4)as PRICE_GROUP, count(PRODUCT_ID) as PRODUCTS from PRODUCT..
-
[프로그래머스] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기SQL-프로그래머스 2023. 2. 15. 11:32
문제 문제를 정리하면, 2022-10-16에 대여 중인 자동차는 '대여중' , 반납 날짜가 2022-10-16 여도 '대여중', 나머지는 '대여 가능'으로 출력하기 배운 점 - case - when절을 at 사용해서 if - else 처럼 출력할 수 있다는 점을 배웠다 코드 SELECT CAR_ID, max(case when '2022-10-16' between DATE_FORMAT(START_DATE, '%Y-%m-%d') and DATE_FORMAT(END_DATE, '%Y-%m-%d') then '대여중' else '대여 가능' end ) as AVAILABILITY from CAR_RENTAL_COMPANY_RENTAL_HISTORY group by CAR_ID order by CAR_ID desc;
-
[프로그래머스] 경기도에 위치한 식품창고 목록 출력하기SQL-프로그래머스 2023. 2. 14. 12:07
문제 문제 정리하면, 경기도안에 있는 시설중 냉동시설 여부에 따라 column 값을 N 이나 원래 값을 넣고, ID 기준 오름차순으로 정렬하기 배운 점 - like 의 사용법 - select 문 안에서 if 문으로 출력값을 표현하는 법 코드 SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, if(FREEZER_YN is null, 'N',FREEZER_YN) from FOOD_WAREHOUSE where ADDRESS like '경기도%' order by WAREHOUSE_ID;
-
[프로그래머스] 조건에 맞는 도서와 저자 리스트 출력하기SQL-프로그래머스 2023. 2. 13. 16:20
문제 문제를 정리하면, 경제라는 카테고리에서 데이트 포맷을 정리해서 출판일을 기준으로 오름차순 정렬해주기 배운 점 - 데이트 포맷은 select 문 뒤에서 처리하기 - %Y 는 년도를 4자리수로 %y는 2자리로 하는등 % 뒤의 알파벳의 대소문자로 출력값이 변한다 코드 SELECT b.BOOK_ID , a.AUTHOR_NAME, DATE_FORMAT(b.PUBLISHED_DATE, "%Y-%m-%d") as PUBLISHED_DATE from BOOK as b join AUTHOR as a on b.AUTHOR_ID = a.AUTHOR_ID where b.CATEGORY = '경제' order by b.PUBLISHED_DATE asc;
-
[프로그래머스] 상품 별 오프라인 매출 구하기SQL-프로그래머스 2023. 2. 13. 16:16
문제 배운 점 - 테이블에서 상품 코드 별 매출액 이라고 하는데 이걸 group by로 묶어준다 - 합계를 호출해야 하므로 sum을 쓰는것은 알았는데 select 바로 뒤에서 해준다 - 출력될때 column 명이 SALES 니까 as SALES 를 해준다 코드 SELECT p.PRODUCT_CODE , sum(p.PRICE * o.SALES_AMOUNT) as SALES from PRODUCT as p join OFFLINE_SALE as o on o.PRODUCT_ID = p.PRODUCT_ID group by p.PRODUCT_CODE order by SALES desc,PRODUCT_CODE asc;
-
[프로그래머스] 오랜 기간 보호한 동물(1)SQL-프로그래머스 2023. 2. 13. 16:11
문제 문제 정리, 보호 시작일 순으로 아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL 작성하기 배운 점 - limit는 가장 마지막에 작성을 한다 - 입양에 대한 조건은 outs 테이블에 datetime이 있는지 없는지로 체크하면 된다 코드 SELECT i.NAME, i.DATETIME from ANIMAL_INS as i left join ANIMAL_OUTS as o on o.ANIMAL_ID = i.ANIMAL_ID where o.DATETIME is null order by i.DATETIME limit 3;