전체 글

말보다는 실천하는 사람
😉 아이디어1. _!다익스트라(dijkstra) 알고리즘!_ 구현이 포인트2. _!각자 택시를 타고 목적지로 간 경우 or 중간 목적지까지 함께 이동하고 각자 이동한 cost를 비교!_😉 풀이import heapq # 우선순위큐from math import infdef solution(n, s, a, b, fares): graph = [[] for _ in range(n + 1)] for start, end, cost in fares: # 각 노드와 연결된 edge 체크 graph[start].append([end, cost]) graph[end].append([start, cost]) def dijkstra(start, end)..
😉 아이디어1. 덱 자료구조 활용2. 덱에 인덱스를 담아두고 다음 순회되는 값이 덱의 가장 최근에 추가된 값보다 큰 경우 _!answer!_ 변수에 담고 반환😉 풀이 from collections import dequedef solution(numbers): dq = deque() answer = [-1] * len(numbers) for i in range(len(numbers)): while dq and numbers[dq[-1]] ✔️ 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/154539
😉 아이디어1. 이분탐색을 통해 모든 인원이 통과가능한 최적의 값을 탐색2. _!시간 // 심사관의 처리시간!_의 합은 해당 시간 동안 처리 가능한 총 인원😉 풀이def solution(n, times): answer = 0 left = 1 right = 1_000_000_000_000 * 1_000_000_000_000 while left = n: answer = mid right = mid - 1 else: left = mid + 1 return answer✔️ 링크 : https://school.programmers.co.kr/learn/courses/30/lessons..
😉 아이디어1. 크루스칼 및 유니온-파인드 알고리즘 활용😉 풀이def solution(n, costs): answer = 0 sorted_cost = sorted(costs, key=lambda x: x[2]) # Set 자료형 선언 connect = {costs[0][0]} while len(connect) != n: #print(f'sorted_cost : {sorted_cost}') for cost in sorted_cost: # union-find 자료구조 if cost[0] in connect and cost[1] in connect: continue ..
😉 아이디어1. _!A ~ UUUUU!_까지의 DFS 실행2. 중간에 목표로 하는 단어와 일치하는 경우 count 횟수 저장😉 풀이cnt = 0saved = 99_999def dfs(word, ws, result): global cnt global saved if 1 ✔️ 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/84512#
😉 아이디어1. 이진탐색 기반으로 _!1 ~ 200000000!_의 범위 중 얼마나 많은 사람들이 징검다리가 통과가능한지 찾는 문제😉풀이def solution(stones, k): left, right = 1, 200_000_000 maxPeople = 0 while left = k: break else: blockedCnt = 0 # 건널 수 없는 돌의 개수 확인 if blockedCnt >= k: # 막힌 돌이 k개 이상이면 실패 right 감소 right = mid - 1 else:..
😉 아이디어1. 동적 프로그래밍 처리 문제2. 현 Row의 인덱스를 기준으로 이전 Row와 합산이 가능한 경우의 수 중 최대 산출3. 현재 Row의 값에 반영하고 다음 행 진행😉 풀이def getValue(prevRow, currentValue, blockedIndex): # 이전에 사용한 인덱스 외 모든 경우의 수 비교 maxValue = -1 #print('prevRow', prevRow) for i in range(len(prevRow)): if i == blockedIndex: continue prevValue = prevRow[i] maxValue = max(maxValue, prevValue + currentVa..
😉 아이디어1. 시간초과를 방지하기 위해, _!left ~ right!_사이의 _!i!_값에 대응하는 배열 인덱스 산출2. 해당 인덱스에 일치하는 배열의 값 저장😉 풀이def calcVal(x, y): # 주어진 인덱스 중 최대값 + 1 = 배열의 값 return max(x, y) + 1def solution(n, left, right): answer = [] for i in range(left, right + 1): # i 값 대응 배열 인덱스 산출 y = i // n; x = (i % n) answer.append(calcVal(x, y)) return answer✔️ 링크 : https://school.programmers.co.k..
thisisdj
codenextdoor