Heeto
article thumbnail
[ 백준 / 골드3 / 파이썬 Python ] 1516번 - 게임 개발

링크 : https://www.acmicpc.net/problem/1516 1516번: 게임 개발 첫째 줄에 건물의 종류 수 N(1 ≤ N ≤ 500)이 주어진다. 다음 N개의 줄에는 각 건물을 짓는데 걸리는 시간과 그 건물을 짓기 위해 먼저 지어져야 하는 건물들의 번호가 주어진다. 건물의 번호는 1부 www.acmicpc.net 코드 from collections import defaultdict,deque n = int(input()) time = [0] * (n+1) count = [0] * (n+1) preq = defaultdict(list) q = deque() for i in range(1,n+1): arr = list(map(int,input().split())) time[i] = arr[..

article thumbnail
[ 백준 / 골드5 / 파이썬 Python ] Knapsack Problem ( 14728번-벼락치기, 9084번-동전 )

링크 https://www.acmicpc.net/problem/14728 https://www.acmicpc.net/problem/9084 9084번: 동전 우리나라 화폐단위, 특히 동전에는 1원, 5원, 10원, 50원, 100원, 500원이 있다. 이 동전들로는 정수의 금액을 만들 수 있으며 그 방법도 여러 가지가 있을 수 있다. 예를 들어, 30원을 만들기 위해서는 www.acmicpc.net 14728번: 벼락치기 ChAOS(Chung-ang Algorithm Organization and Study) 회장이 되어 일이 많아진 준석이는 시험기간에도 일 때문에 공부를 하지 못하다가 시험 전 날이 되어버리고 말았다. 다행히도 친절하신 교수님께서 아래와 www.acmicpc.net Knapsack 알고..

article thumbnail
[ 백준 / 골드2 / 파이썬 Python ] 1365번 - 꼬인 전깃줄

링크 : https://www.acmicpc.net/problem/1365 1365번: 꼬인 전깃줄 첫 줄에 전봇대의 개수 N(1 ≤ N ≤ 100,000)이 주어지고, 이어서 N보다 작거나 같은 자연수가 N개 주어진다. i번째 줄에 입력되는 자연수는 길 왼쪽에 i번째 전봇대와 연결된 길 오른편의 전봇대가 www.acmicpc.net 코드 import bisect n = int(input()) arr = list(map(int,input().split())) stack = [] for x in arr: if not stack or x > stack[-1]: stack.append(x) continue loc = bisect.bisect_left(stack,x) stack[loc] = x print(n-l..

article thumbnail
[ 백준 / 골드2 / 파이썬 Python ] 2233번 - 사과나무

링크 : https://www.acmicpc.net/problem/2233 2233번: 사과나무 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 2,000)이 주어진다. 둘째 줄에는 벌레가 만드는 2×N자리의 이진수가 주어진다. 셋째 줄에는 썩은 사과의 위치를 나타내는 두 정수 X, Y가 주어진다. 이는 2×N자리 www.acmicpc.net 코드 n = int(input()) tree = list(map(int,str(input()))) x,y = map(int,input().split()) a,b = 0,0 inOut = [[0,0] for _ in range(n+1)] parent = [0] * (n+1) depth = [0] * (n+1) prev, last = 0, 0 for i in range(1,2..

article thumbnail
[ 백준 / 골드3 / 파이썬 Python ] 1719번 - 택배

링크 : https://www.acmicpc.net/problem/1719 1719번: 택배 명우기업은 2008년부터 택배 사업을 새로이 시작하기로 하였다. 우선 택배 화물을 모아서 처리하는 집하장을 몇 개 마련했지만, 택배 화물이 각 집하장들 사이를 오갈 때 어떤 경로를 거쳐야 하 www.acmicpc.net 코드 n,m = map(int,input().split()) graph = [[1e9]*(n+1) for _ in range(n+1)] dp = [[str(x)]*(n+1) for x in range(n+1)] for _ in range(m): a,b,c = map(int,input().split()) graph[a][b] = c graph[b][a] = c dp[a][b] = b dp[b][a]..

article thumbnail
[ 백준 / 골드4 / 파이썬 Python ] 1647번 - 도시 분활 계획

링크 : https://www.acmicpc.net/problem/1647 1647번: 도시 분할 계획 첫째 줄에 집의 개수 N, 길의 개수 M이 주어진다. N은 2이상 100,000이하인 정수이고, M은 1이상 1,000,000이하인 정수이다. 그 다음 줄부터 M줄에 걸쳐 길의 정보가 A B C 세 개의 정수로 주어지는데 A번 www.acmicpc.net 코드 import sys input = sys.stdin.readline def ancestor(node): if parent[node] != node: parent[node] = ancestor(parent[node]) return parent[node] n,m = map(int,input().split()) graph = [list(map(int,..

article thumbnail
[ 백준 / 실버2+골드1 / 파이썬 Python ] 2098번 - 외판원 순회

링크 : https://www.acmicpc.net/problem/10971 https://www.acmicpc.net/problem/2098 2098번: 외판원 순회 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 16) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j www.acmicpc.net 10971번: 외판원 순회 2 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 10) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j www.acmicpc.n..

article thumbnail
[ 프로그래머스 / LV2 / 파이썬 Pyhton ) 마법의 엘리베이터

링크 : https://school.programmers.co.kr/learn/courses/30/lessons/148653 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(s): answer = 0 stack = list(map(int,list(str(s))))[::-1] while stack: x = stack.pop() if x > 5: # 5보다 작다면 if stack: stack[-1] += 1 answer += 10-x else: answer += 10-x+1 elif x < 5: # 5보다 크다면 answer += ..

article thumbnail
[ 백준 ][ 골드3 ] 163236번 - 아기 상어 ( 파이썬 Python )

링크 : https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 코드 from collections import deque n = int(input()) sx,sy = -1,-1 graph = [] eat_cnt, fish_cnt, time, size = 0, 0, 0, 2 dx,dy = [-1,0,0,1],[0,-1,1,0] for i in range(n): l = list(map(int,input().split())) for j in ran..