본문 바로가기

개발자 강화/코딩 테스트

(58)
[프로그래머스] 타겟넘버 - 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 ..
[백준] 1926_그림 BFS 실1 (Python3) 백준 BFS 먹으러 옴 https://www.acmicpc.net/problem/1926 실1이라서 보자마자 바로 BFS가 머리에 그려지는 수준 이중 for문으로 이차원 배열을 탐색하다가1을 발견하면, 그때부터 bfs를 시작한다 해당 시작점을 기준으로 상하좌우 노드를 탐색해서, 만약 1이라면 q에 넣어준다q에 더 이상 탐색할 점이 남지 않을 때까지 while문을 돌린다while문을 돌릴 때마다 그림의 크기+1을 해주고탐색이 다 끝나면 그림 크기를 return한다 이거 visited로 탐색 여부 볼 수 있을까 싶어서 visited 이차원 배열을 만들어서 False로 초기화 했는데중간에 좀 꼬여서 버렸다 다른 블로그 글을 찾아보니그냥 배열을 탐색하면서 그림 크기 더해주기에 사용했으면 1을 0으로 바꿔서 vi..
[프로그래머스] 네트워크-BFS/DFS lv.3 (Python3) 제가 그래프에 많이 약해서 그래프 좀 풀어보겠습니다.https://school.programmers.co.kr/learn/courses/30/lessons/43162 네트워크 2차원 배열이 있고, 각 열마다 어떤 번호와 연결되어 있는지 1, 연결되어 있지 않은지 0으로 표시합니다. A-B, B-C 연결에서 A와 C는 B를 통해 간접적으로 연결됩니다. 이런 간접 연결을 포함해서 같은 네트워크 상에 있는 컴퓨터의 최대 개수를 구합니다 BFS 기본 구조는 from collections import deque로 deque를 불러오고일단 q에 첫 번째 원소를 집어넣고while q를 돌려서 q가 빌떄까지 계속한다그 안에서 for문을 돌려 q에서 popleft 한 원소에 대해그 원소 주변에 있는 조건에 해당하는 원소..
[프로그래머스] 카펫 - 완전탐색 (C++) lv2 C++ 연습! 카펫의 가운데는 노란색, 테두리 1줄은 갈색갈색과 노란색의 cell 개수만 보고 카펫의 가로, 세로 크기를 알 수 있을까? 아이디어: 노란색의 가로+2 = 갈색 가로, 노란색 세로+2 = 갈색 세로 총 cell 개수 = 노랑+갈색; brown 가로세로 = 카펫 가로세로임그러면 brown의 가로세로를 순차적으로 점검하며 possibility를 분석하면 된다 brown 세로 길이 최솟값 = 3왜냐면 yellow의 최소 세로가 1임. 그리고 위아래로 brown cell이 1개씩 붙으니까 3 brown 세로 길이 최대 = 루트(총 cell 개수)왜냐면 총 개수를 어떻게 구겨넣든 일단 가로=세로가 되는 지점에서 멈춰야 되니까(그 이상으로 넘어가면, 그 이전에서 살펴본 것을 가로, 세로 길이만 바꿔서..
[프로그래머스] 소수 찾기 - 완전탐색 (C++) c++언어에 익숙해지기파이썬 원툴 코테에서 c++ 코테로 전이하는 과정...  (삽질 과정 모두 포함)(정답만 있는 포스트 아님) 한 자리 숫자가 적힌 종이조각이 흩어져 있다.흩어진 종이조각을 붙여 소수를 몇 개 만들 수 있는지 알아내자종이 조각에 적힌 문자열 numbers가 주어졌을 때종이조각으로 만들 수 있는 소수가 몇 개인지 return하자 아이디어1: 일단 str 형태로 숫자가 줄줄 붙어서 나온다.파이썬이었다면 list에 담아서 배열로 만들었을 것 같다c++은 어떻게 할 수 있을까? str.copy()를 사용해보자 #include #include #include #include using namespace std;int solution(string numbers) { int answer = ..