본문 바로가기

분류 전체보기

쿠키 사용하기 웹 서버는 쿠키를 이용해서 웹 브라우저에 정보를 전송할 수 있다. 쿠키를 전달 받은 웹 브라우저는 이후 웹 섭에 요청을 보낼 때 쿠키를 함께 전송한다. 쿠키를 사용하면 웹 서버와 웹 브라우저가 필요한 값을 공유하고 상태를 유지할 수 있다. 쿠키 사용하기 쿠키는 웹 브라우저를 보관하는 데이터이다. 웹 브라우저는 웹 서버에 요청을 보낼 때 쿠키를 함께 전송하며, 웹 서버는 웹 브라우저가 전송한 쿠키를 사용해서 필요한 데이터를 읽을 수 있다. 쿠키의 동장 방식은 아래와 같다.1. 쿠키 생성 --요청--> 웹서버 웹서버 쿠키 저장소쿠키 1. 생성 웹 서버 측에서 쿠키를 생성하고 이 쿠키를 응답 데이터의 헤더에 저장해서 웹 브라우저에 전송한다.2. 저장 웹 브라우저는 응답 데이터에 포함된 쿠키를 쿠키 저장소에 보..
기본적인 정렬 알고리즘 simple, slow - Bubble sort, Insertion sort, Selection sortfast - Quick sort, Merge sort, Heap sortO(N) - Radix sort selection sort29 10 14 37 13 중에서 가장 큰 값을 찾는다. 이 값을 맨 마지막 자리와 바꾼다. 맨 마지막 자리를 제외한 나머지 수 중에 가장 큰 수를 맨 뒤에 넣는다. 반복한다.data=[29,10,14,37,13] for i in range(4,0,-1): m = max(data[:i+1]) data[i],data[data.index(m)] = m,data[i] print(data)수행시간:for문은 n-1번 반복, 가장 큰 수를 찾기 위한 비교 횟수 n-1,n-2,n-3,...
멱집합 powerset 멱집합은 집합의 모든 부분집합이다. {a, b}가 있으면 {}, {a}, {b}, {a,b} 가 멱집합이다.원소 a를 하나 빼고 나머지 원소들로 부분집합 A를 만들고 a와 A를 합한 것, a가 없고 A만 있는 것을 찾아내면 된다. 원소가 있는지 없는지에 따라 트리를 만들면 저런 모양이 된다. 리프 노드를 보면 {}, {a}, {b}, {a,b}가 있으므로 멱집합이 완성된다. 왼쪽 가지와 오른쪽 가지를 include[k] = True, include[k] = False로 표현했다. True면 해당 인덱스의 원소가 있는 것이고 False면 해당 원소를 제외하고 부분 집합을 만드는 것이다. 계속 돌리다보면 공집합부터 모든 원소가 있는 집합이 만들어진다. include의 인덱스 i가 True라면 arr에서 해당..
N queens problem 백트래킹 n queens 문제는 체스판의 각 행마다 말을 하나씩 놓는데 이 말들이 같은 열과 같은 대각선상에 놓여있지 않아야 한다.상태공간트리를 만들어 조건이 맞는지 탐색해보는데 중간에 조건에 맞지 않으면 False를 리턴한다. False를 리턴하게 되면 이전 행으로 올라간다고 생각하면 되는데 그래서 Back Tracking이라고 부른다. 처음부터 마지막 행까지 가지 않아도 조건에 맞지 않다면 중간에 다시 올라온다. n=int(input('체스판의 가로 수 입력')) cols = [0 for i in range(n+1)] def promising(level): #유망성 따지기 for i in range(1,level): #첫 행부터 현재 행의 위의 행까지 if cols[level] == cols[i]:return..
Counting Cells In A Blob 각 픽셀은 background pixel(0)이거나 image pixel(1)이다.서로 연결된 image pixel들의 집합을 blob이라고 부른다.8방향으로 연결이 가능하다. 입력 2차원 grid[N][N], 하나의 좌표 x,y출력 blob의 크기, pixel이 blob에 속하지 않으면 0 현재 픽셀의 blob 크기를 세려면 픽셀이 1이어야한다. 그러므로 1이 아니라면 0을 리턴한다.픽셀이 1이면 1을 카운트하고 중복 카운트를 방지하기 위해 2를 대입한다.8방향으로 이웃한 픽셀에 대해 그 픽셀의 좌표를 인자로 갖는 함수를 재귀적으로 호출한다.s=[ [1,0,0,0,0,0,0,1], [0,1,1,0,0,1,0,0], [1,1,0,0,1,0,1,0], [0,0,0,0,0,1,0,0], [0,1,0,1,0,..
미로찾기 Maze [[0,0,0,0,0,0,0,1], [0,1,1,0,1,1,0,1], [0,0,0,1,0,0,0,1], [0,1,0,0,1,1,0,0], [0,1,1,1,0,0,1,1], [0,1,0,0,0,1,0,1], [0,0,0,1,0,0,0,1], [0,1,1,1,0,1,0,0]]위는 미로를 표현한 2차원 리스트이다. 1은 벽이라 통과할 수 없고 0은 통로이다. 출발점은 [0][0]이고 출구는 [n-1][n-1]인 지점이다. 순환적 사고현재 위치에서 출구까지 가는 경로가 있으려면1) 현재 위치가 출구이거나 혹은2) 이웃한 셀들 중 하나에서 현재 위치를 지나지 않고 출구까지 가는 경로가 있거나 def findpath(x,y):if maze[x][y] == exit: return True #현 위치가 출구라면 Tru..
순환의 개념과 기본 예제 3 순환 함수의 기본 조건적어도 하나의 base case, 순환되지 않고 종료되는 case가 있어야 함.모든 case는 base case로 수렴해야 함. 암시적 매개변수가 아닌 명시적 매개변수를 사용해야 함 def search(data,n,target): for i in range(n): if data[i] == target: return i return -1 data = [1,2,3,4,5,6,7] print(search(data,7,4))암시적 : 리스트 data의 인덱스는 0부터 n-1이라고 생각하고 시작 인덱스는 생략함. def search(data,begin,end,target): if begin > end: # base case return -1 elif target==data[begin]:ret..
순환의 개념과 기본 예제 2 문자열의 길이 계산string = 'hello' def length(string): if string == '': return 0 else : return 1+length(string[1:]) print(length(string))문자열의 프린트str='hello' def printstr(str): if len(str) == 0: return print(str[0], end='') printstr(str[1:]) print(printstr(str))문자열을 뒤집어 프린트str='hello' def printstr(str): if len(str) == 0: return print(str[-1], end='') printstr(str[:-1]) print(printstr(str))2진수로 변환하여 출력def..