파이썬 31

[python]백준 1654번: 랜선 자르기(이진탐색)

# 1654 랜선 자르기 https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 코드 K, N = map(int, input().split()) already = [int(input()) for _ in range(K)] start, end = 1, max(already) while start = N: start = mid + 1 else: end = mid - 1 print(end) 📝 풀이 주어진 랜선을 잘라서 필요한 ..

Algorithm 2023.01.18

[python]백준 2589번: 보물섬(BFS)

# 2589 보물섬 https://www.acmicpc.net/problem/2589 2589번: 보물섬 첫째 줄에는 보물 지도의 세로의 크기와 가로의 크기가 빈칸을 사이에 두고 주어진다. 이어 L과 W로 표시된 보물 지도가 아래의 예와 같이 주어지며, 각 문자 사이에는 빈 칸이 없다. 보물 지도의 www.acmicpc.net 코드 import sys input = sys.stdin.readline from collections import deque r, c = map(int, input().strip().split()) graph = [] for _ in range(c): graph.append(list(input())) # 상하좌우 dx = [0, 0, -1, 1] dy = [-1, 1, 0, 0]..

Algorithm 2023.01.07

컴파일러란? (feat. 인터프리터)

✅ 컴파일러(Compiler) 컴파일러란 사람이 이해할 수 있는 언어를 기계어로 변환해주는 작업이다. 사람이 이해할 수 있는 언어는 우리가 사용하는 C언어, Java, Python 등의 프로그래밍언어로 작성된 소스코드를 의미한다. 그리고 이러한 프로그래밍 언어를 하위 수준 언어로 변환하여 실행가능한 프로그램을 만드는 작업을 컴파일러(Compiler)라고 한다. 물론 소스코드를 실제 실행 파일로 변환하는 컴파일 작업에는 위와 같이 많은 단계들이 있지만 간단하게 살펴보려고 한다. ✅ 컴파일 과정 컴파일 과정은 4가지 단계(전처리 과정 - 컴파일 과정 - 어셈블리 과정 - 링킹 과정)으로 나누어 진다. 이 4가지 단계를 묶어서 컴파일 과정, 빌드 과정이라고 부르기도 하고 컴파일 과정과 링킹 과정을 따로 나눠서..

Computer Science 2023.01.06

[python]백준 1010번: 다리 놓기(Combination)

# 1010 다리 놓기 https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 코드 import math T = int(input()) for _ in range(T): n, m = map(int, input().split()) print(math.comb(m, n)) 📝 풀이 강을 기준으로 n이 서쪽이고 m이 동쪽이다. m에서 겹치지 않게 n만큼 뽑아주면 된다. 예제를 보면 2C2, 5C1, 29C13와 같은 값이 나온다. 그래서 딱 보자마자 조합 ..

Algorithm 2023.01.05

[python]백준 12851번: 숨바꼭질 2(BFS)

# 12851 숨바꼭질 2 https://www.acmicpc.net/problem/12851 12851번: 숨바꼭질 2 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net 코드 from collections import deque n, k = map(int, input().split()) visited = [0] * 100001 q = deque([(n, 0)]) fast, way = 10 ** 6, 0 while q: now, time = q.popleft() visited[now] = 1 if no..

Algorithm 2023.01.04

[python]백준 2579번: 계단 오르기(DP)

# 2579 계단 오르기 https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 코드 n = int(input()) list_ = [int(input()) for _ in range(n)] dp = [0] * n if len(list_)

Algorithm 2023.01.04

[python]백준 1463번: 1로 만들기(DP)

# 1463 1로 만들기 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 코드 n = int(input()) dp = [0] * (n+1) for i in range(2, n + 1): dp[i] = dp[i-1] + 1 if i % 2 == 0: dp[i] = min(dp[i], dp[i//2] + 1) if i % 3 == 0: dp[i] = min(dp[i], dp[i//3] + 1) print(dp[n]) 📝 풀이 문제에서는 1로 만들기 위한 세 가지 가정을 제시했다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나..

Algorithm 2023.01.04

[python]백준 1388번: 바닥 장식(DFS, BFS)

# 1388 바닥 장식 https://www.acmicpc.net/problem/1388 1388번: 바닥 장식 형택이는 건축가이다. 지금 막 형택이는 형택이의 남자 친구 기훈이의 집을 막 완성시켰다. 형택이는 기훈이 방의 바닥 장식을 디자인했고, 이제 몇 개의 나무 판자가 필요한지 궁금해졌다. 나 www.acmicpc.net 코드 DFS def dfs_horizontal(x,y): # 주어진 범위를 벗어나는 경우에 즉시 종료 if x = n or y = m: return False # 현재 노드를 아직 방문하지 않았다면 if graph[x][y] == '-': # 해당 노드 방문 처리 graph[x][y] = 'o' # 좌, 우의 위치들도 모두 재귀적으로 호출 dfs_horizontal(x, y - 1..

Algorithm 2023.01.02

[python]백준 1260번: DFS와 BFS(DFS, BFS)

# 1260 DFS와 BFS https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 코드 from collections import deque N, M, V = map(int, input().split()) graph = [[] for i in range(N+1)] for i in range(M): a, b = map(int, input().split()) graph[a].append(b) graph[b].appe..

Algorithm 2023.01.01

[python]백준 2606번: 바이러스(BFS)

# 2606 바이러스 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 코드 from collections import deque n = int(input()) v = int(input()) graph = [[] for i in range(n+1)] visited = [0] * (n+1) for i in range(v): a, b = map(int, input().split()) graph[a] += [b] graph[b] += [a] visited[..

Algorithm 2023.01.01
728x90