본문 바로가기

개발자 강화

(63)
[SQL] 있었는데요 없었습니다 - MySQL 프로그래머스 lv3 동물 보호 시작일이 담긴 테이블과 동물 입양 시작일이 담긴 테이블이 있음근데 보호 시작일보다 입양 시작일이 빠른 경우가 있음 이런 케이스를 조회해야 하며보호 시작일이 빠른 순으로 조회해야 함 SELECT I.ANIMAL_ID, I.NAMEFROM ANIMAL_INS AS IJOIN ANIMAL_OUTS AS OON I.ANIMAL_ID=O.ANIMAL_IDWHERE I.DATETIME>O.DATETIMEORDER BY I.DATETIME두 테이블의 id값을 기준으로 join 한 후where문으로 보호시작일 값이 더 큰 경우만 추출했다
[SQL] 상품 별 오프라인 매출 구하기 - MySQL PRODUCT 테이블과 OFFLINE_SALE 테이블에서PRODUCT_ID를 기준으로 JOIN 그리고, PRODUCT PRICE값과 OFFLINE_SALE의 SUM(SALES_AMOUNT)값을 곱한 값을 SALES로 명명하기 ORDER BY 조건을 2개 설정할 수 있는게 신기했음문제에 제시된 우선순위를 따라 매출액 내림차순, 상품코드 오름차순 순으로 정렬했음 -- 코드를 입력하세요SELECT P.PRODUCT_CODE, P.PRICE*SUM(O.SALES_AMOUNT) AS SALESFROM PRODUCT AS PJOIN OFFLINE_SALE AS O ON P.PRODUCT_ID=O.PRODUCT_IDGROUP BY P.PRODUCT_CODEORDER BY SALES DESC, PRODUCT_CODE ..
[백준] 5014_스타트링크_BFS (c++) 실1 이전에 푼 촌수세기랑 비슷하게 풀었어요 https://www.acmicpc.net/problem/5014 이 건물은 총 F층이고나는 지금 S층에 있고, G층으로 가고 싶습니다버튼이 좀 이상해서 위 버튼을 누르면 +U층으로, 아래 버튼을 누르면 -D층으로 이동합니다만약 위 아래 버튼을 눌러서 나오는 층이 최저층이나 최고층을 초과하면 이동하지 않습니다 최소 버튼 횟수로 원하는 층에 도달하고자 합니다. 현재 층을 queue에 넣습니다. n+1 길이의 visited 배열은 -1로 초기화합니다(미방문 의미) S층부터 시작하니까, visited[s]는 0으로 만듭니다. while q가 빌 때까지 돌리면서만약 현재 원소가 g랑 같으면 멈추고그 외에는 위로 가는 경우, 아래로 가는 경우를 탐색합니다해당 층이 미방문인지..
[백준] 2644 - 촌수계산 (C++) lv.2 c++ 개발 환경 세팅 떔에 더 오래걸림 - python에서는 bfs의 queue를 deque함수로 사용해서, 습관적으로 deque로 함수를 짰다 촌수 관계를 입력받으면, 각 node에 어떤 사람과 가족인지 집어넣어주는데,단방향이 그래프가 아니라 양방향 그래프기 때문에(서로 가족) edge를 c->d d->c 양쪽 다 넣어줘야 한다 그리고, q를 만들어서 전형적인 bfs 탐색을 시작하는데,이때 visited 함수가 단순히 bool 함수로 방문 T/F를 처리하는게 아니라현재 가족이 시작점(사람 a)으로부터 몇 번째 촌수인지 저장하기 위해다음노드 = 현재노드+1 로 촌수를 누적 기록해준다 그리고 종료점(사람 b)가 되면 탐색을 멈추고결과적으로 visited[b]를 출력하면 a->b 사이 촌수가 된다. #in..
[프로그래머스] 타겟넘버 - BFS/DFS (C++) https://developer-dreamer.tistory.com/36 [프로그래머스] 타겟넘버 - BFS/DFS알고리즘 고득점 키트 BFS/DFS lv2 타겟넘버 숫자 배열이 주어지고, 목표 값이 있음각 숫자를 더하거나 빼서 목표 값을 만들고, 총 목표 값을 몇 가지로 만들 수 있는지 return하면 됨 혼자 못풀었음developer-dreamer.tistory.compython 버전 --- 이번 포스트는 c++ 버전으로 다시 풀겠습니다 여기에서 습득한 것python의 sum(배열)처럼, c++에도 배열 원소 합을 구할 수 있음 https://stackoverflow.com/questions/26941943/how-to-add-all-numbers-in-an-array-in-c How to add a..
[SQL] 즐겨찾기가 가장 많은 식당 정보 출력하기 - GROUP BY - 프로그래머스 물고기 종류별 대어 찾기랑 매우 비슷하다SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES FROM REST_INFO WHERE (FOOD_TYPE, FAVORITES) IN (SELECT FOOD_TYPE, MAX(FAVORITES) FROM REST_INFO GROUP BY FOOD_TYPE) ORDER BY FOOD_TYPE DESC FOOD_TYPE과 FAVORITES을 가져와서FOOD_TYPE과 MAX(FAVORITES)에 해당하면, 추출하는 방식으로 했고음식 종류별로 FAVORITES이 가장 많은 값을 추출해야 하기 때문에 GROUP BY로 묶어줬다 https://school.programmers.co.kr/learn/courses/30/lessons/1311..
[SQL] GROUP BY - 자동차 대여 기록에서 대여중/대여 가능 여부 구분하기 - 프로그래머스 그룹바이라는 스타트업도 있는데.. 자동차 대여 기록에서 대여중/대여 가능 여부 구분하기SELECT CAR_ID, (CASE   WHEN CAR_ID IN(     SELECT CAR_ID     FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY     WHERE '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 ..
[SQL] 프로그래머스 SUM,MAX,MIN - MySQL 푼 걸 기록하는 용도가 강해서... 도움이 되실지는 모르겠지만정리해보겠습니다제가 풀다가 틀려서 다른 블로그 참고한 부분도 있어욥  가장 비싼 상품 구하기SELECT MAX(PRICE) AS MAX_PRICE FROM PRODUCT 가격이 제일 비싼 식품의 정보 출력하기 SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE FROM FOOD_PRODUCT WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)  SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, MAX(PRICE) AS PRICE FROM FOOD_PRODUCT; 이 쿼리는 MAX(PRICE)를 FOO..
[이.취.코] 개미 전사 - DP - 이것이 취업을 위한 코딩테스트다 개미전사는 창고에서 식량을 턴다바로 인접한 창고의 식량을 털면 발각될 수 있다항상 1칸 떨어진 창고의 식량을 털어야 한다털 수 있는 식량의 최댓값을 구해라 n = int(input())food = list(map(int,input().split()))dp = [0]*(n+1)dp[0]=food[0]dp[1]=max(food[0],food[1])for i in range(2,n): dp[i] = max(dp[i], dp[i-2]+food[i])print(dp[n-1]) 처음에 dp[1]을 food[1]로 초기화했는데,food[1]만 고려하면 안된다0번 창고만 터는 경우, 1번 창고만 터는 경우 중 최댓값을 구해야 이후 솔루션들에서 제대로 최댓값을 구할 수 있다 입력..
[백준] 18352-특정 거리의 도시 찾기 BFS (Python3) - 이것이 취업을 위한 코딩 테스트다 - 를 공부해보자 (ch.13)18352번: 특정 거리의 도시 찾기1~N번까지 도시, M개의 단방향 도로모든 도로의 거리는 1 특정한 도시 X로부터 출발해 도착할 수 있는 모든 도시 중최단 거리가 정확히 K인 모든 도시의 번호를 출력 --- 처음에 visited 배열을 사용하려고 했는데, 이 문제 입력 자체가 graph의 간선을 입력받는 형태인걸 간과했다 그래서 q.popleft()로 구한 현재 노드를 바탕으로 graph[노드]의 값을 탐색하며not visited이면 True로 바꾸고 queue에 append하도록 했더니1->2, 1->3인 경로를 모두 추가해서, 거리가 1만 증가해야 하는 상황에서도 2가 증가해버리는 상황이 나왔다 해답을 보니, 이건 visited ..