백준 4796 | 그리디 | 캠핑 [파이썬 python]
·
Algorithm/백준
4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 코드 i = 1 while True: l, p, v = map(int, input().split()) if p==0 and l==0 and v==0: # 0, 0, 0이 입력되면 반복문 종료 break camping = (l * (v // p)) + min((v % p), l) # 캠핑장을 사용할 수 있는 최대 일수 print('Case {}:'.format(i), camping) i += 1 쉬운 문제인 줄 알고 달려들었다가 '틀렸습니다!'를 계속 만나게..
백준 2805 | 이진탐색 | 나무 자르기 [파이썬 python]
·
Algorithm/백준
2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 코드 n, m = map(int, input().split()) tree = list(map(int, input().split())) # 이진 탐색을 위한 시작점, 끝점 start = 0 end = max(tree) result = 0 # 최종 절단기 높이 while(start mid: # 절단기보다 주어진 나무가 길면 자른 나머지를 total에 추가 total += i - mid # 이진 탐색 if total < m: #..
백준 1920 | 이진탐색 | 수 찾기 [파이썬 python]
·
Algorithm/백준
1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 코드 # 이진 탐색 함수(재귀적 구현) def binary_search(array, target, start, end): if start > end: return None mid = (start + end) // 2 # 중간점 if array[mid] == target: # target을 찾았으면 리턴 return mid elif array[mid] > target: # target이 중간점보다 작으면 왼쪽부분 탐..
백준 24444 | BFS | 너비 우선 탐색 1 [파이썬 python]
·
Algorithm/백준
24444번: 알고리즘 수업 - 너비 우선 탐색 1 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양방 www.acmicpc.net 코드 import sys from collections import deque sys.setrecursionlimit(10 ** 6) input = sys.stdin.readline n, m, r = map(int, input().split()) # 정점의 수, 간선의 수, 시작 정점 graph = [[] for _ in range(n+1)] visited = [0] * (n+1) # 방문..
백준 24479 | DFS | 깊이 우선 탐색 1 [파이썬 python]
·
Algorithm/백준
24479번: 알고리즘 수업 - 깊이 우선 탐색 1 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양 www.acmicpc.net 코드 import sys sys.setrecursionlimit(10 ** 6) input = sys.stdin.readline n, m, r = map(int, input().split()) # 정점의 수, 간선의 수, 시작 정점 graph = [[] for _ in range(n+1)] visited = [0] * (n+1) # 방문 순서 저장. 0이면 방문 X c = 1 def dfs(..
백준 3009 | 네 번째 점 [파이썬 Python]
·
Algorithm/백준
3009번: 네 번째 점 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. www.acmicpc.net 코드 # 주어진 세 점의 좌표 x1,y1=map(int,input().split()) x2,y2=map(int,input().split()) x3,y3=map(int,input().split()) # 네번째 점의 좌표 0,0으로 초기화 x4=y4=0 # 축에 평행한 직사각형을 만들기 위해 x값이 같은 점을 기준으로 함 if x1==x2: x4=x3 elif x1==x3: x4=x2 elif x2==x3: x4=x1 y4=y1+(y3-y2) if y1==y2: y4=y3 elif y1==y3: y4=y2 elif y2==y3: y4=y1 pri..