본문 바로가기

분류 전체보기

(170)
[백준] 5014_스타트링크_BFS (c++) 실1 2024. 11. 9. 19:54 이전에 푼 촌수세기랑 비슷하게 풀었어요 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 2024. 11. 9. 14:55 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++) 2024. 11. 9. 12:06 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 - 프로그래머스 2024. 11. 9. 11:26 물고기 종류별 대어 찾기랑 매우 비슷하다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 - 자동차 대여 기록에서 대여중/대여 가능 여부 구분하기 - 프로그래머스 2024. 11. 9. 11:08 그룹바이라는 스타트업도 있는데.. 자동차 대여 기록에서 대여중/대여 가능 여부 구분하기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 2024. 11. 9. 10:58 푼 걸 기록하는 용도가 강해서... 도움이 되실지는 모르겠지만정리해보겠습니다제가 풀다가 틀려서 다른 블로그 참고한 부분도 있어욥  가장 비싼 상품 구하기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 2024. 11. 8. 12:24 - 이것이 취업을 위한 코딩테스트다 개미전사는 창고에서 식량을 턴다바로 인접한 창고의 식량을 털면 발각될 수 있다항상 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) 2024. 11. 8. 10:39 - 이것이 취업을 위한 코딩 테스트다 - 를 공부해보자 (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 ..

728x90