일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 힙
- DP
- heap
- 백준
- DFS
- django
- Dynamic Programming
- Greedy
- programmers
- Algorithm
- sort
- 프로그래머스
- 그래프
- DVWA
- graph
- 큐
- 코딩테스트
- string
- Brute Force
- binary search
- 알고리즘
- 완전탐색
- Queue
- 카카오 기출
- 문자열
- BFS
- Code Refactoring
- 동적계획법
- 탐욕법
- 정렬
- Today
- Total
목록Algorithm (57)
생각과 고민이 담긴 코드
문제 : https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 풀이 import sys from itertools import combinations def calculate(stores): result = 0 for k in home: result += min([abs(l[0] - k[0]) + abs(l[1] - k[1]) for l in stores]) return result n, m = map(int, sys.stdin..
문제 : https://programmers.co.kr/learn/courses/30/lessons/12979 코딩테스트 연습 - 기지국 설치 N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5 programmers.co.kr 풀이 from math import ceil def solution(n, stations, w): answer = 0 for i in range(len(stations)+1): if i == 0: # 첫 아파트부터 첫번째 station까지의 구간 answer += ceil((stations[i]-w-1) / (2*w+1)) elif ..
문제 : https://programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr 풀이 def solution(skill, skill_trees): answer = 0 n = len(skill) for i in skill_trees: check = [0]*n error = False for j in i: if j in skill: idx = skill.index(j) if idx != 0 and check[idx-1] == 0: error = True break else: check[idx] = 1 if not error: answer += 1 return answer 쉬운 문제였다. 생각해보면 skill에 있는 문..
문제 : https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 풀이 import sys from itertools import combinations from copy import deepcopy def virus(row, col): if row > 0 and map_lab[row - 1][col] == 0: map_lab[row - 1][col] = 2 virus(row - 1, col) if row < N - 1 and map_lab[row + 1][col]..
문제 : https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이 import sys from collections import defaultdict from collections import deque n = int(sys.stdin.readline()) tree = defaultdict(list) for _ in range(n - 1): edge = sys.stdin.readline().split() tree[edge[0]].append(edge[1]) tree[edge[1]].append(edge[0]) ..
문제 : https://www.acmicpc.net/problem/1487 1487번: 물건 팔기 첫째 줄에 최대 이익을 만들어주는 가격을 출력한다. 이익이 최대인 가격이 여러개라면, 가장 낮은 가격을 출력한다. 또, 어떤 가격으로 팔아도 이익을 남길 수 없다면 0을 출력한다. www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline()) cost = [] for _ in range(n): # [가격, 배달비] 형태로 생성. temp = list(map(int, sys.stdin.readline().split())) cost.append([temp[0], temp[1]]) cost.sort(key=lambda x: (x[0], x[1])) # 가격, 배달비 순..
문제 : https://programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 풀이 def solution(p): if p == "": return "" if verify(p): # 올바른 괄호 문자열이면 그대로 return. return p p = list(p) u = [p.pop(0)] cnt = 1 while cnt != 0: # 균형잡힌 괄호 문자열을 p로부터 분리. item = p.pop(0) if item == u[0]:..
출처 : https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 문제 설명 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 새로운 메뉴를 제공하기로 결정했습니다. 어떤 단품 메뉴들을 조합해서 코스요리 메뉴로 구성하면 좋을지 고민하던 "스카피"는 이전에 각 손님들이 주문할 때 가장 많이 함..