목록Python (138)
나의 개발일지
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/72412 🔑 경우의 수 구하기, 이분탐색 핵심 1 info 요소가 "java backend junior pizza 150" 일 때 먼저 점수는 따로 분리해서 저장한다. (150) "java backend junior pizza" 문자열이 쿼리에 포함될 수 있는 경우를 모두 구한다. (총 16가지) ex) "java backend junior pizza", "- backend junior pizza", "java - junior pizza", ㆍ ㆍ ㆍ , "- - - -" 까지 { "javabackendjuniorpizza" : [150], "-backendjuniorpizza" : [150..
문제 : https://www.acmicpc.net/problem/15903 🔑 그리디, 우선 순위 큐 카드들을 heap에 담고 가장 작은 카드를 두 개 뽑아낸다. 뽑아낸 카드 두 개를 합쳐서 두 번 집어넣는다. 이 과정을 m번 반복하고 힙에 남은 카드들의 전체 합계를 구한다. 끝 ✨ from heapq import heapify, heappop, heappush n, m = map(int, input().split()) card = list(map(int, input().split())) heapify(card) for _ in range(m): x = heappop(card) y = heappop(card) heappush(card, x+y) heappush(card, x+y) print(sum(ca..
문제 : https://www.acmicpc.net/problem/28283 🔑 BFS 보안 시스템이 설치되는 컴퓨터로부터 탐색을 시작한다. 각 컴퓨터까지의 깊이를 방문 배열에 저장한다. 보안 시스템이 각 컴퓨터로 뻗어 나가는 순서 탐색 종료 후, 방문 안 했고 이 컴퓨터에서 훔칠 수 있는 돈이 있는 경우는 -1을 출력 (무한히 훔칠 수 있음) 위 조건에 해당하지 않으면 깊이가 저장된 방문배열에 각 컴퓨터마다 (깊이 * 이 컴퓨터에서 훔칠 수 있는 돈) 계산을 한다. 내림차순으로 정렬해서 가장 많은 돈을 훔친 x개의 합을 구한다. 끝 ✨ from collections import defaultdict, deque import sys input = sys.stdin.readline n, m, x, y = ..
가상환경 및 패키지 관리 가상환경 생성 python -m venv 가상환경이름 가상환경 실행 가상환경이름\Scripts\activate 가상환경 해제 deactivate 설치된 라이브러리 확인 pip list 현재 환경에 설치된 모든 패키지와 버전 정보를 저장 (requirements.txt) pip freeze > requirements.txt requirements.txt로 패키지 설치 pip install -r requirements.txt
문제 : https://www.acmicpc.net/problem/13975 🔑 우선순위 큐, 최소 힙 파일의 크기가 가장 작은 두 개를 골라서 하나의 파일로 합친다. 이 과정을 위해 힙을 사용 이때 드는 비용을 더한다. 합쳐진 파일을 다시 힙에 넣는다. 힙에 들어있는 파일이 1개가 될 때까지 반복하면 끝 ✨ from heapq import heappush, heappop, heapify import sys input = sys.stdin.readline t = int(input()) for _ in range(t): k = int(input()) file = list(map(int, input().split())) heapify(file) answer = 0 while len(file) >= 2: x ..
문제 : https://www.acmicpc.net/problem/1644 🔑 에라토스테네스의 체를 사용해 소수 찾기 먼저 시간초과가 나지 않으려면 소수를 찾을 때 에라토스테네스의 체를 사용해야 한다. n까지의 소수를 미리 구해놓는다. start, end 두 개의 포인터를 사용 (0, 0) 첫 번째 소수부터 시작해서 소수의 합이 n보다 작으면 end 포인터를 한 칸씩 오른쪽으로 옮긴다. 합이 n이 되면 정답을 올린다. 합이 n보다 커지커나 같아지면 start 포인터를 한 칸씩 오른쪽으로 옮긴다. 위 방법 반복 끝 ✨ n = int(input()) prime_check = [True] * (n+1) # 소수의 배수들을 체크 for i in range(2, int(n ** 0.5) + 1): if prime..
문제 : https://www.acmicpc.net/problem/1600 🔑 BFS 중요한 점 갔던 곳이라도 더 빠르게 갈 수 있다면 가야 한다. 원숭이 이동, 말 이동을 따로 만든다. 큐에 x, y, 이동 횟수, 말 능력 사용 횟수를 넣는다. 초기 상태 = [0, 0, 0, 0] 원숭이 이동은 항상 진행한다. 조건은 범위 체크, 방문 체크, 말 능력 사용 횟수 체크 말처럼 이동은 능력 사용 횟수가 남아 있을 때만 진행한다. 조건은 범위 체크, 방문 체크, 말 능력 사용 횟수 체크 from collections import deque import sys input = sys.stdin.readline k = int(input()) w, h = map(int, input().split()) MAP = [..
문제 : https://school.programmers.co.kr/learn/courses/19344/lessons/242259 🔑 BFS 석유가 있으면 현재 좌표를 가지고 BFS를 호출한다. 석유가 있는 덩어리의 크기를 구한다. (cnt) 덩어리의 열 위치를 저장한다. (lst) 저장한 덩어리 열 위치에 덩어리의 크기를 누적 시킨다. (answer) 누적 시킨 리스트의 최댓값이 답 ✨ from collections import deque def solution(land): answer = [0] * len(land[0]) mx, my = [0, 0, 1, -1], [1, -1, 0, 0] visit = [[0] * len(land[0]) for _ in range(len(land))] def bfs(..