본문 바로가기

알고리즘 (Python)/이것이 코딩 테스트다 with 파이썬

(50)
[다이나믹 프로그래밍 알고리즘] 바닥 공사 - 파이썬(python) 바닥 공사 난이도 : 中下 풀이 시간 : 20분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 n = int(input()) dp_table = [0] * 1001 dp_table[1] = 1 dp_table[2] = 3 for i in range(3, n+1): dp_table[i] = (dp_table[i-1] + (dp_table[i-2] * 2)) % 796796 print(dp_table[n]) 예시 # 정수 N을 입력 받기 n = int(input()) # 앞서 계산된 결과를 저장하기 위한 DP 테이블 초기화 d = [0] * 1001 # 다이나믹 프로그래밍(Dynamic Programming) 진행 (보텀업) d[1] = 1 d[2] = 3 for i in range(3, n + 1)..
[다이나믹 프로그래밍 알고리즘] 개미 전사 - 파이썬(python) 개미 전사 난이도 : 中 풀이 시간 : 30분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 n = int(input()) foods = list(map(int, input().split())) dp_table = [0] * 100 dp_table[0] = foods[0] dp_table[1] = max(foods[0], foods[1]) for i in range(2, n): dp_table[i] = max(dp_table[i-1], dp_table[i-2] + foods[i]) print(dp_table[n-1]) 예시 # 정수 N을 입력 받기 n = int(input()) # 모든 식량 정보 입력 받기 array = list(map(int, input().split())) # 앞서 계산된 결..
[다이나믹 프로그래밍 알고리즘] 1로 만들기 - 파이썬(python) 1로 만들기 난이도 : 中下 풀이 시간 : 20분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 x = int(input()) dp_table = [0] * 30001 for i in range(2, x+1): dp_table[i] = dp_table[i-1] + 1 if i % 2 == 0: dp_table[i] = min(dp_table[i], dp_table[i // 2] + 1) if i % 3 == 0: dp_table[i] = min(dp_table[i], dp_table[i // 3] + 1) if i % 5 == 0: dp_table[i] = min(dp_table[i], dp_table[i // 5] + 1) print(dp_table[x]) 예시 # 정수 X를 입력 받기 x = ..
[이진 탐색 알고리즘] 떡볶이 떡 만들기 - 파이썬(python) 떡볶이 떡 만들기 난이도 : 中 풀이 시간 : 40분 시간 제한 : 2초 메모리 제한 : 128 MB 해답 n, m = list(map(int, input().split(' '))) ddeoks = list(map(int, input().split())) start, end = 0, max(ddeoks) result = 0 while start mid: total += i - mid if total < m: end = mid - 1 else: result = mid start = mid + 1 print(result) 예시 # 떡의 개수(N)와 요청한 떡의 길이(M)을 입력 n, m = list(map(int, input().split(' '))) # 각 떡의 개별 높이 정보를 입력 array = lis..
[이진 탐색 알고리즘] 부품 찾기 - 파이썬(python) 부품 찾기 난이도 : 中下 풀이 시간 : 30분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 n = int(input()) goods = list(map(int, input().split())) m = int(input()) wants = list(map(int, input().split())) goods.sort() def binary_search(array, target, start, end): while start target: end = mid - 1 elif array[mid] < target: start = mid + 1 return None result = 0 for i in wants: result = binary_search(goods, i, 0, n-1) if result ==..
[정렬 알고리즘] 두 배열의 원소 교체 - 파이썬(python) 두 배열의 원소 교체 난이도 : 下 풀이 시간 : 20분 시간 제한 : 2초 메모리 제한 : 128 MB 해답 n, k = map(int, input().split()) a = list(map(int, input().split())) b = list(map(int, input().split())) a.sort() b.sort(reverse=True) for i in range(k): if a[i] < b[i]: a[i], b[i] = b[i], a[i] else: break print(sum(a)) 예시 n, k = map(int, input().split()) a = list(map(int, input().split())) b = list(map(int, input().split())) a.sort()..
[정렬 알고리즘] 성적이 낮은 순서로 학생 출력하기 - 파이썬(python) 성적이 낮은 순서로 학생 출력하기 난이도 : 下 풀이 시간 : 20분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 n = int(input()) array = [] for i in range(n): input_list = input().split() array.append((input_list[0], int(input_list[1]))) array = sorted(array, key=lambda x: x[1]) for x in array: print(x[0], end=' ') 예시 n = int(input()) array = [] for i in range(n): input_data = input().split() array.append((input_data[0], int(input_data[1..
[정렬 알고리즘] 위에서 아래로 - 파이썬(python) 위에서 아래로 난이도 : 下 풀이 시간 : 15분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 n = int(input()) array = [] for i in range(n): array.append(int(input())) array.sort(reverse=True) for i in array: print(i, end=' ') 예시 n = int(input()) array = [] for i in range(n): array.append(int(input())) array = sorted(array, reverse=True) for i in array: print(i, end=' ') 해설 n과 array에 각각 입력받은 후, 파이썬의 sort() 함수를 사용하여 내림차순으로 정렬하였습니다...
[BFS 알고리즘] 미로 탈출 - 파이썬(python) 미로 탈출 난이도 : 中下 풀이 시간 : 30분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 from collections import deque n, m = map(int, input().split()) graph = [] for i in range(n): graph.append(list(map(int, input()))) dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def bfs(x, y): queue = deque() queue.append((x, y)) while queue: x, y = queue.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if (nx = n or ..
[DFS 알고리즘] 음료수 얼려 먹기 - 파이썬(python) 음료수 얼려 먹기 난이도 : 中下 풀이 시간 : 30분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 n, m = map(int, input().split()) graph = [] for i in range(n): graph.append(list(map(int, input()))) def dfs(x, y): if (x = m): return False else: if graph[x][y] == 0: graph[x][y] = 1 dfs(x-1, y) dfs(x+1, y) dfs(x, y-1) dfs(x, y+1) return True return False result = 0 for i in range(n): for j in range(m): if dfs(i, j) == True: result = ..