목록Python (32)
공부기록
🍀문제 설명 🍀내 풀이 from collections import deque def bfs(maps, arr, m, n, graph, xs, ys, startnum): dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] q = deque() q.append((xs, ys, startnum)) graph[xs][ys] = 0 while q: x, y, now = q.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0
🍀문제 설명 🍀문제 풀이 참고: https://velog.io/@isayaksh/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-Programmers-%ED%98%B8%ED%85%94-%EB%8C%80%EC%8B%A4-Python from heapq import heappush, heappop def solution(book_time): answer = 1 for i in range(len(book_time)): book_time[i][0] = int(book_time[i][0][:2])*60+int(book_time[i][0][3:]) book_time[i][1] = int(book_time[i][1][:2])*60+int(book_time[i][1][3:]) book_time.sor..
🍀문제 설명 🍀내 풀이 from collections import deque def solution(board): answer = 0 m = len(board) n = len(board[0]) graph = [[-1]*n for _ in range(m)] for i in range(m): for j in range(n): if board[i][j] == 'R': R = (i, j) elif board[i][j] == 'G': G = (i, j) dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] q = deque() q.append((R[0], R[1], 0)) graph[R[0]][R[1]] = 0 while q: x, y, now = q.popleft() for i in range(4..
🍀문제 설명 🍀내 풀이 # 가지고 있는 곡괭이로 확인 가능한 광물까지 5개 단위로 잘라서 출력하는 함수 def mineral_prev(minerals, picks): new = [minerals[i:i+5] for i in range(0, sum(picks)*5, 5)] # diamond, iron 적은 순으로 정렬 new.sort(key = lambda x: (sum([i=="diamond" for i in x]), sum([i=="iron" for i in x]))) return new def solution(picks, minerals): answer = 0 graph = [[1, 1, 1], [5, 1, 1], [25, 5, 1]] # 곡괭이 종류 별 피로도 # 제시된 minerals를 5개씩 자..
🍀문제 설명 🍀내 풀이 # 제시간에 해야될 과제 하고 시간 남았을 때 남은 과제 하는 함수 def check_others(plans, others, t): # plans, 남은 과제들, 남은 시간 adds = [] # answer에 추가될 과제 이름 while t>0 and others: x = others.pop() # 제일 최근 거 이어서 하기 if x[1] > t: # 남은 시간에 다 못끝냄 -> 다시 others에 집어넣기 others.append((x[0], x[1]-t)) t = 0 else: adds.append(x[0]) t -= x[1] return others, adds def solution(plans): answer = [] # 과제 시작시간: 한시간을 60분으로 바꾸고 수치화 / ..
🍀문제 설명 🍀내 풀이 def solution(people, limit): answer = 0 people.sort() ##### Two Pointer 사용 high = len(people)-1 low = 0 # index의 값이 작은값/큰값의 관계가 아닐 때까지 while low
🍀문제 설명 🍀내 풀이 def solution(dirs): visited = set() # 처음 걸어본 길의 개수를 세기 위한 set visited_all = set() # 처음 걸어간 방향과 반대로 걸어간 방향을 모두 포함 now = [0, 0] move = {'U':[0, 1], 'D':[0, -1], 'R':[1, 0], 'L':[-1, 0]} # 이동 방향에 따른 dictionary for d in dirs: m = move[d] if -5
🍀문제 설명 🍀내 풀이 from collections import deque def solution(x, y, n): answer = [] dist = [-1]*1000001 q = deque() q.append(x) # 현재 숫자, 변환 횟수 dist[x] = 0 while q: now = q.popleft() # 3 곱하기 for c in [now*3, now*2, now+n]: if c
🍀문제 설명 🍀내 풀이 (오답) def solution(bridge_length, weight, truck_weights): answer = 0 bridge_on = 0 # 다리 위 트럭 개수 bridge_weight = 0 # 다리 위 트럭의 총 무게 while truck_weights: t = truck_weights.pop(0) if bridge_weight + t > weight or bridge_on >= bridge_length: answer += bridge_length-1 bridge_on = 0 bridge_weight = 0 bridge_on += 1 bridge_weight += t answer += 1 answer += bridge_length return answer truck_w..
🍀문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/87694 🍀내 풀이 참고: https://jyeonnyang2.tistory.com/247 from collections import deque def solution(rectangle, characterX, characterY, itemX, itemY): answer = 0 # 테두리는 1, 나머지는 -1로 표시한 recs와 방문여부 및 거리를 나타내는 graph 생성 recs = [[-1]*102 for _ in range(102)] graph = [[-1]*102 for _ in range(102)] for i in rectangle: i = [j*2 for j in i] # 모든 ..