[Baekjoon] 4485. 녹색 옷 입은 애가 젤다지?
·
코딩테스트/Python
🔗 Problem Link 4485번: 녹색 옷 입은 애가 젤다지? 젤다의 전설 게임에서 화폐의 단위는 루피(rupee)다. 그런데 간혹 '도둑루피'라 불리는 검정색 루피도 존재하는데, 이걸 획득하면 오히려 소지한 루피가 감소하게 된다! 젤다의 전설 시리즈의 주 www.acmicpc.net ❔Thinking NxN 크기의 공간이 주어질 때, (0,0)에서 출발해 (N-1, N-1)로 이동하는 최소 비용을 반환한다. 💻Solution import heapq INF = int(1e9) dx = [-1,1,0,0] dy = [0,0,-1,1] def dijkstra(x, y, graph): q = [] n = len(graph) heapq.heappush(q, (graph[x][y], x, y)) while ..
[Baekjoon] 6497. 전력난
·
코딩테스트/Python
🔗 Problem Link 6497번: 전력난 성진이는 한 도시의 시장인데 거지라서 전력난에 끙끙댄다. 그래서 모든 길마다 원래 켜져 있던 가로등 중 일부를 소등하기로 하였다. 길의 가로등을 켜 두면 하루에 길의 미터 수만큼 돈이 들 www.acmicpc.net ❔Thinking 마을과 임의의 두 마을 사이의 거리가 주어질 때, 모든 마을을 연결하는 최소 비용의 가로등 설치 비용을 반환한다. 가로등은 두 마을 사이의 거리만큼의 비용이 든다. 💻Solution import heapq def find_parent(parent, x): if parent[x] != x: parent[x] = find_parent(parent, parent[x]) return parent[x] def union_parent(pa..
[Baekjoon] 14501. 퇴사
·
코딩테스트/Python
🔗 Problem Link 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net ❔Thinking 상담에 걸리는 시간과 상담에 따른 이익이 주어질 때, N+1일 이후에 얻게되는 최대 이익을 반환한다. 💻Solution n = int(input()) dp = [0] * (n+1) table = [] max_price = 0 for i in range(1, n+1): t, p = map(int, input().split()) table.append([t,p]) for i in range(n-1, -1, -1): time = table[i][0] + i if time
[Baekjoon] 18405. 경쟁적 전염
·
코딩테스트/Python
🔗 Problem Link 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net ❔Thinking NXN 시험관에 바이러스가 순서대로 상,하,좌,우로 퍼져나갈 때, S초 뒤에 X,Y에 존재하는 바이러스를 반환한다. 바이러스는 1~K까지 있고, 작은 순서대로 퍼져간다. 💻Solution import heapq import sys input = sys.stdin.readline dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] n, k = map(int, input().s..
[Programmers] Level 2. 문자열 압축
·
코딩테스트/Python
🔗 Problem Link 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❔Thinking 주어진 문자열을 1개 이상의 일정한 단위로 잘라 압축한 문자열 중, 가장 짧은 문자열의 길이를 반환한다. 💻Solution def solution(s): INF = int(1e9) answer = INF n = len(s) for i in range(1, n+1): tmp = '' prev = s[:i] cnt = 1 for idx in range(i, n, i): now = s[idx:idx+i] if prev == now: cnt += 1 else: tmp +=..
[Programmers] Level 2. 가격대 별 상품 개수 구하기
·
코딩테스트/MySQL
🔗 Problem Link 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❔Thinking 상품 코드와 상품의 가격이 표시된 테이블에서 가격대와 가격대 별 개수를 반환한다. 💻Solution SELECT (PRICE DIV 10000) * 10000 AS PRICE_GROUP, COUNT((PRICE DIV 10000) * 10000) AS PRODUCTS FROM PRODUCT GROUP BY PRICE_GROUP ORDER BY PRICE_GROUP 🗝️keypoint / 연산과 DIV의 연산의 차이는 소수점 아래 결과의 출력 여부이다. (DIV는 결..