Python17 이진탐색(Binary Search) 1. 이진탐색 : 정렬되어 있는 리스트에서 탐색범위를 절반씩 좁혀가며 데이터를 탐색하는 방법 => 탐색 범위가 크다면 이진탐색 떠올리기! (1) 이진탐색의 기본 틀 start 일단 절단기의 높이를 최대한 높게 하는 것이 목표이기 때문에 start=0, end=떡의 길이를 저장한 리스트에서 최대값으로 설정 => 계속해서 start를 mid+1에 설정하며 절단기의 높이를 높여도 조건 충족하는지 확인한다 => 이때 요청한 떡의 길이 M보다 작아진다면 end = mid-1로 하여 왼쪽으로 절단기의 높이를 다시 늘린다 def Binary_Search(tteok, M, start, end): #탐색범위가 크다 ! => 이진 탐색 생각 while(startmid): sum+=(tteok[i]-mid) if(sum>=.. 2023. 9. 19. DFS&BFS 문제 1. 음료수 얼려먹기 (1) 문제 (2) DFS 이용 1) def DFS(graph, r,c, N,M): graph[r][c]=1 #상하좌우 dx=[-1,1,0,0] dy=[0,0,-1,1] for i in range(4): x= r+dx[i] y= c+dy[i] if(x=M): continue elif(graph[x][y]!=1): DFS(graph, x, y, N,M) return True def main(): N,M = map(int, input().split()) graph = [] for i in range(N): graph.append(list(map(int,list(input())))) cnt=0 for i in range(N): for j in range(M): if(graph[i][j]!.. 2023. 9. 4. DFS&BFS[python] 1. 그래프 탐색 알고리즘 : 탐색이란 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정으로 dfs와 bfs가 존재한다 1.1. DFS(Depth-First Search) : 깊이 우선 탐색으로 최대한 깊게 파고들어 탐색하는 알고리즘으로 스택 자료구조를 이용한다 (1) 동작방식 1) iterative 버전 탐색 시작 노드를 스택에 삽입한다 스택이 비어있지않으면 pop하여 방문하지않은 노드이면 방문처리를 하고 방문하지않은 인접노드를 스택에 push (이때, pop한 노드가 방문한 노드이면 방문하지않은 인접노드 스택에 push하는 과정 x) 스택이 빌 때까지 계속 pop하고 push하는 과정을 반복한다 2) recursive 버전 탐색 시작 노드를 방문처리한다 방문하지않은 인접노드 dfs탐색 시작 현재 방.. 2023. 9. 4. 카이사르 암호화/복호화 1. 암호화 과정 from util.header import printHeader def caesarCipher(plaintext, key): first = ord(' ') last = ord('~') ciphertext ='' for char in plaintext: ciphertext+=chr((ord(char)-first+key)%(last-first+1)+first) return ciphertext def main(): printHeader("1-3 Making Caesar Ciphertext", "2023-08-11","(c) Jeong, Min-Ji") plaintext = input("암호화할 문장을 입력하세요: ") cipherKey= int(input("key값을 정하시오:")) ciph.. 2023. 8. 12. Day1 from datetime import datetime #별 출력 함수 def starLine(length): for i in range(length): print("*", end="") print("") #공백 출력 함수 def printSpace(length): for i in range(length): print(' ', end="") title = "1-1: Making Header" date = [datetime.today().year, datetime.today().month, datetime.today().day] date = list(map(lambda x: str(x), date)) date= '.'.join(date) name = "(c) Jeong, Min-Ji" titleLength .. 2023. 8. 9. 이전 1 2 3 다음