프로그래밍/이코테python

이코테 Ch.8 Dynamic Programming 문제 풀이
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import time d = [0]*10000 def fib_dp(n): if n==1 or n==2: return n if d[n]!=0: return d[n] d[n] = fib(n-1) + fib(n-2) return d[n] def fib(n): if n==1 or n==2: return n return fib(n-1) + fib(n-2) print("자연수 입력:",end='') n = int(input()) #w/o memoization st_tim = time.time() re_fib = fib(n) ed_tim = time.time() fib_tim =..

이코테 Ch.7 Binary Search 문제 풀이
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #Binary Search Implementation import sys inp = list(map(int,sys.stdin.readline().rstrip().split())) arr = [] for i in range(len(inp)): arr.append((inp[i],i)) #(원래원소, index) t = int(input()) arr.sort(key=lambda x:x[0]) def binary_search(arr,st,ed,target): if st==ed: if arr[st][0]==target: return arr[st][1] else: return -1 ..

이코테 Ch.6 Sorting 문제 풀이
import sys arr = list(map(int,sys.stdin.readline().rstrip().split())) def quick_sort(arr,st,ed): if st>=ed: #배열의 크기가 1이하일때 return False pivot = st left = st+1 right = ed while left = arr[pivot]: right -= 1 if left < right: arr[left], arr[right] = arr[right], arr[left] #swap else: arr[right], arr[pivot] = arr[pivot], arr[right] quick_sort(arr,st,right-1) quick_sort(arr,right+1,ed) quick_sort(arr,..

이코테 Ch.5 DFS/BFS 문제 풀이
graph = [ #Adjacency List [], [2,3,8], [1,7], [1,4,5], [3,5], [3,4], [7], [2,6,8], [1,7] ] w/ recursive function def recursive_DFS(visited, graph, vertex): print(vertex, end=' -> ') visited[vertex] = 1 for i in graph[vertex]: if visited[i]==0: recursive_DFS(visited,graph,i) vis = [0,0,0,0,0,0,0,0,0] recursive_DFS(vis,graph,2) w/ deque from collections import deque def BFS(graph, visited, vertex)..

이코테 Ch.4 Implementation 문제 풀이
import sys n = int(input()) ls = sys.stdin.readline().rstrip().split() x = 1 #initial coordinates y = 1 dic = {'R' : 0, 'L' : 1, 'U' : 2, 'D' : 3} #if문을 줄이기 위해서 dictionary를 이용함. dx = [0,0,-1,1] #방향 리스트 dy = [1,-1,0,0] for i in ls: tx = x + dx[dic[i]] ty = y + dy[dic[i]] if 0

무지의 먹방 라이브 (2019 카카오 블라인드 공채 Level4)
* 효율성 테스트에 부분 점수가 있는 문제입니다. 평소 식욕이 왕성한 무지는 자신의 재능을 뽐내고 싶어 졌고 고민 끝에 카카오 TV 라이브로 방송을 하기로 마음먹었다. 그냥 먹방을 하면 다른 방송과 차별성이 없기 때문에 무지는 아래와 같이 독특한 방식을 생각해냈다. 회전판에 먹어야 할 N 개의 음식이 있다. 각 음식에는 1부터 N 까지 번호가 붙어있으며, 각 음식을 섭취하는데 일정 시간이 소요된다. 무지는 다음과 같은 방법으로 음식을 섭취한다. 무지는 1번 음식부터 먹기 시작하며, 회전판은 번호가 증가하는 순서대로 음식을 무지 앞으로 가져다 놓는다. 마지막 번호의 음식을 섭취한 후에는 회전판에 의해 다시 1번 음식이 무지 앞으로 온다. 무지는 음식 하나를 1초 동안 섭취한 후 남은 음식은 그대로 두고, ..