분명... 알고리즘 수업 때 배웠던.. MST오래되니 잊어버려서 다시 도전!한 문제~ 푼 날짜 : 2024.11.08푼 문제 : [1197] / 최소 스패닝 트리사용한 언어 : python알고리즘 : MST(Prim) 접근 방식 :Kruskal 이랑 Prim 둘 중 Prim 방식으로 풀었다. 현재 기준으로 가장 비용이 낮은 것으로 이어나가는 방식이다.(이건 추후 다시 한 번 개념 정리해서 올려야겠다.) heapq를 사용하기 때문에 가장 작은 비용을 꺼내는 것은 쉽다!방문하지 않은 정점을 찾아나가며 비용이 가장 작은 길을 선택한다. 코드 :import sysimport heapqV, E = map(int, sys.stdin.readline().split())graph = [[] for _ in ..
푼 날짜 : 2024.11.07푼 문제 : 영어 끝말잇기사용한 언어 : python 접근 방식 :1) 이전 단어 끝 문자와 다음 단어 첫 문자가 일치하는지 비교2) 이전에 사용하지 않은 단어여야함 (딕셔너리로 체크)3) n보다 사람번호가 커지면 사람 번호를 다시 첫 번째 번호로 바꾸고 차례 수를 증가 코드 :def solution(n, words): answer = [] myDict = dict() for i in words: myDict[i] = 1 myDict[words[0]] = 0 now = words[0] idx = tern = 1 # idx는 사람번호, tern은 차례 check = False # 끝말잇기가 잘 이어지고 있는지 체..
푼 날짜 : 2024.11.02푼 문제 : 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기사용한 언어 : MYSQL 코드 :SELECT CAR_ID, CASE WHEN MAX('2022-10-16' BETWEEN START_DATE AND END_DATE) = 1 THEN '대여중' ELSE '대여 가능' END AS AVAILABILITYFROM CAR_RENTAL_COMPANY_RENTAL_HISTORYGROUP BY CAR_IDORDER BY CAR_ID DESC 풀이 방식 :시작 날짜(START_DATE) 또는 종료 날짜(END_DATE)에 2022-10-16에 포함되어 있어야한다.그리고 그렇다면 '대여 가능' 아니라면 '대여중'을 출력해야한다.SEL..
푼 날짜 : 2024.10.30푼 문제 : [1189] / 컴백홈사용한 언어 : python알고리즘 : DFS/백트래킹 접근 방식 :DFS로 탐색하며 K만큼 이동한 위치가 목적지라면 카운트 해주는 방식으로 구현했다. 코드 : import sysR, C, K = map(int, sys.stdin.readline().split())graph_ = []for _ in range(R): row = list(sys.stdin.readline().rstrip()) graph_.append(row)dy = [-1, 1, 0, 0]dx = [0, 0, -1, 1]visited = [[0 for _ in range(C)] for _ in range(R)]ans = 0def DFS(v, now): gl..
푼 날짜 : 2024.10.30푼 문제 : 카테고리 별 도서 판매량 집계하기사용한 언어 : MYSQL 코드 :SELECT B.CATEGORY, SUM(S.SALES) as TOTAL_SALESFROM BOOK_SALES as S JOIN BOOK as B ON S.BOOK_ID = B.BOOK_ID # 두 테이블 조인WHERE S.SALES_DATE LIKE "2022-01-%" # 2022-01 판매량을 확인하기 위해GROUP BY B.CATEGORY # 카테고리를 기준으로 그룹화ORDER BY B.CATEGORY # 카테고리 기준 오름차순 정렬 풀이 방식 : 정보가 각각 담겨있는 두 테이블을 조인한다. 이때 공통적으로 가지고 있는 BOOK_ID를 기준으로 조인했다.FROM BOOK_SALES as ..
푼 날짜 : 2024.10.30푼 문제 : [2210] / 숫자판 점프사용한 언어 : python알고리즘 : DFS 접근 방식 :깊이 우선 탐색으로 시작한다.문자열을 하나씩 추가해가며 여섯 자리가 만들어지면 set에 담겨 있는지 확인하고 없다면 추가한다. (여섯 자리가 만들어지면 무조건 리턴해준다.) DFS를 다 돌고 나면 맨 뒤에 문자열을 제거한다.이 과정을 반복하면 set에 중복없는 여섯 자리 수가 남게 된다! 코드 : NUM = 5 # 5x5 배열이므로 상수 고정graph_ = []for _ in range(NUM): nums = list(input().rstrip().split()) graph_.append(nums)dy = [-1, 1, 0, 0]dx = [0, 0, -1, 1]#..
푼 날짜 : 2024.10.27푼 문제 : [3184] / 양사용한 언어 : python알고리즘 : BFS 접근 방식 :BFS로 방문하지 않은 구간을 하나씩 탐색하며 양의 수와 늑대 수를 센다.비교해서 많은 값들을 누적해서 계산해주었다! 코드 :import sysfrom collections import dequeR, C = map(int, sys.stdin.readline().split())graph_ = []for _ in range(R): row = list(sys.stdin.readline().rstrip()) graph_.append(row)visited = [[0 for _ in range(C)] for _ in range(R)]dx = [-1, 1, 0, 0]dy = [0, 0..
푼 날짜 : 2024.10.25푼 문제 : [1890] / 점프사용한 언어 : python알고리즘 : DP 점화식 :dp[i+num][j] += dp[i][j] (if i + num dp[i][j+num] += dp[i][j] (if j + num 현재 위치에서 이동 가능 숫자(num)만큼 뛰었을 때 범위를 벗어나지 않는 경우 현재 값을 더해준다. 코드 :N = int(input())graph_ = []for _ in range(N): row = list(map(int, input().split())) graph_.append(row)dp = [[0 for _ in range(N)] for _ in range(N)]dp[0][0]=1 # 가장 왼쪽 위 칸에서 출발하므로 시작 1로 초기화..