Python 202

[Python] 2776. 암기왕

def binary_search(t_num): s = 0 # 시작, 마지막 포인트 초기화 e = n1 - 1 while s t_num: # 중간지점 값이 목표 숫자보다 크다면 e = m - 1 # 시작 ~ 중간 범위 설정 else: # 중간지점 값이 목표 숫자보다 작다면 s = m + 1 # 중간 ~ 끝 범위 설정 return 0 # 수첩 1에 숫자 없는 경우 tc = int(input()) for _ in range(tc): n1 = int(input()) # 수첩 1에 적어놓은 정수의 개수 number1 = sorted(set(map(int, input().split()))) # 수첩 1에 적힌 숫자들 n1 = len(number1) n2 = int(input()) # 수첩 2에 적어놓은 정수의 개수..

Algorithm/Baekjoon 2021.10.20

[Python] 2589. 보물섬

from collections import deque # 상 하 좌 우 dy = [-1, 1, 0, 0] dx = [0, 0, -1, 1] def bfs(sy, sx, hour): queue = deque([(sy, sx, hour)]) # 시작지점 추가하고 시작 visited = [[0 for _ in range(garo)] for _ in range(sero)] # 방문한 곳 다시 방문하지 못하도록 만든 리스트 visited[sy][sx] = 1 # 시작지점 방문처리 while queue: y, x, hour = queue.popleft() # 좌표 하나 가져오기 for i in range(4): ny = y + dy[i] nx = x + dx[i] if 0

Algorithm/Baekjoon 2021.10.19

[Python] 5251. 최소이동거리

import heapq tc = int(input()) for idx in range(1, tc+1): n, e = map(int, input().split())# 노드의 개수 n, 간선의 개수 e temp = [list(map(int, input().split())) for i in range(e)]# 출발노드, 도착노드, 가중치 받아오기 dist = [999999999 for i in range(n+1)]# 모든 노드 가중치 무한대로 초기화 visited = [[] for i in range(n+1)]# 인접 리스트 만들기 for i in temp: visited[i[0]].append([i[1], i[2]])# 단방향, 가중치와 함께 저장한다. que = [] heapq.heappush(que, [..

[Python] 2814. 최장경로

def dfs(node, cnt): global answer if answer < cnt: # 더 많은 경로 갔다면 갱신 answer = cnt for next in adj[node]: # node와 연결된 노드 중에 if visited[next]: # 방문한적 있다면 패스 continue visited[node] = True # 방문처리 dfs(next, cnt+1) # 다음노드로 가 visited[next] = False # 방문처리 해제 tc = int(input()) for idx in range(1, tc+1): n, m = map(int, input().split()) adj = [[] for _ in range(n+1)] # 인접 리스트 for _ in range(m): x, y = map(..

[Python] 1952. 수영장

tc = int(input()) for idx in range(1, tc+1): charge = list(map(int, input().split())) # 1일, 1달, 3달, 1년 plan = list(map(int, input().split())) # 1월부터 12월까지의 이용 계획 dp = [0 for _ in range(12)] for i in range(12): dp[i] = dp[i-1] + min(plan[i] * charge[0], charge[1]) # 이전 달의 요금 + (1일 이용권으로 계산 vs 1달 이용권으로 계산) if i > 1: # 3달 이상 됐다면 dp[i] = min(dp[i], dp[i-3] + charge[2]) # 3달 이용권으로 할까 말까 print('#{} {}..

[Python] 4012. 요리사

1. 조합을 직접 구현하여 해결한 풀이 # 조합 구하기 def combination(idx, cnt, a_arr): if cnt == n//2: # 식재료 다 골랐다면 cal_diff(a_arr) # 두 음식의 맛 차이 구하러 고고 return for i in range(idx, n): combination(i+1, cnt+1, a_arr+[i]) # 다음 번호 구해 [0, 1, 2] -> [0, 1, 3] -> [0, 1, 4] # a, b 음식 맛 차이 구하기 def cal_diff(a_arr): global answer a, b = 0, 0 b_arr = [i for i in range(n) if i not in a_arr] # a 음식에서 선택하지 않은 식재료 선택 for i in range(n/..