분류 전체보기 720

[CS] HTTP 메세지

HTTP는 서버와 클라이언트간에 데이터가 교환되는 방식(약속) ASCII코드로 인코딩 된 text정보이며 여러줄로 되어있다. HTTP 초기버전과 HTTP/1.1에서는 클라이언트와 HTTP/2 에서는 최적화 성능 향상을 위해 HTTP 프레임으로 나누어집니다. HTTP Request Message 구조. Request Line : 첫라인으로 method, URI, http version으로 구성 HTTP Method : GET, POST 등의 server가 동작해야할 action을 정의한다. GET : 리소스를 client로 요청하는 것. POST: data가 server로 들어가야 할 때. Request target : 두번째로 오는 요청 타겟은 주로 URL, 또는 프로토콜, 포트, 도메인의 절대 경로로 ..

[CS] OSI 7 Layer

10분 테코톡 히히님과 파즈님 영상 참고해 정리했습니다. OSI 7계층!!! 1계층 물리계층(Pysical Layer) -두 컴퓨터가 통신하려면? 모든 파일과 프로그램은 0과 1의 나열이다! 결국 0과 1만 주고 받을 수 있으면 된다! 전성을 통해 +5V를 흘려보내면 1이 보내지고 -5V를 보내면 0이 보내진다고 가정하면 전선만 있으면 모든 data를 주고 받을 수 있다!. 하지만 실제로는 잘 되지 않았다. 왜? 전자기파는 싸인 함수를 그리기 때문에 주파수는 1초당 진동한 횟수.(Hz) 문제는 전자기파는 완전한 sin함수를 그리지않고 대충 그린것처럼 나옴 주파수가 계속 바뀌고 전선은 모든 주파수를 통과시키지 못함(모든 매질이 마찬가지) ex. 어떤 전선은 5-8Hz만 통과가능한데 전자기파가 1~10Hz라..

[백준][Python] 17123 배열놀이

처음에 그냥 matrix에 넣었다가 시간초과나고 합연산은 한번에 하는걸로 코드 수정. 통과 import sys input = sys.stdin.readline for test in range(int(input())): N,M = map(int,input().split()) matrix = [list(map(int,input().split())) for _ in range(N)] ans = [[] for _ in range(2)] for i in range(N): ans[0].append(sum(matrix[i])) for i in range(N): ans[1].append(sum(matrix[m][i] for m in range(N))) for _ in range(M): r1,c1,r2,c2,v = ma..

[백준][Python] 11060 점프점프

뭔가 요새 DFS로 풀릴것 같으면 DFS하는 습관이 생겼다. import sys input = sys.stdin.readline N = int(input()) A = list(map(int,input().split())) check = [False] * 1200 ans = [] v = 0 cnt = 0 def DFS(v,cnt): if v>=N-1: ans.append(cnt) return if A[v]==0: return for i in range(1,A[v]+1): if not check[v+i] and not v+i>N-1: check[v+i] = True DFS(v+i,cnt+1) check[v+i] = False check[0]=True DFS(0,0) print(min(ans) if ans e..

[백준][Python] 2447 별찍기

별찍기 같은 경우 분할 정복의 대표적 문제다. 분할 : n=3인 경우로 분할 정복 : n=3인 경우를 해결. (매개변수로 받아오는 값만 어떻게 처리해야 동일한 패턴이 나올까 고민하면됨) 병합 : n=3인 경우의 결과값을 다음 순서에 넣어 확장시키면 재귀적인 프렉탈구조를 만들수 있다. # 분할 정복 알고리즘 / 분할, 정복, 합치기. # 정복 # star 배열을 통해 새 matrix를 생성해 반환하는게 목적. # 반복문에서 3*len(star)로 별이 그려지는 모든 배열을 검사하며 len(star) # 즉 최초 n의 크기에 따라 빈칸 " "을 추가적으로 삽입하는 방식을 차용한다. # (n=9일때 3으로 나눠 몫이 1인 index = 1 요소의 가운데 ) def conquer(n): matrix=[] for..

[알고리즘] 분할정복(Divide Conquer)

말 그대로 큰 문제를 재귀적으로 쪼개어 나간 다음 하위문제들의 결과를 조합 해 원래 문제의 결과를 도출하는 방식. 분할 -> 정복 -> 조합 3단계로 이루어지며 대표적으로 병합 정렬 알고리즘을 볼 수 있다. def F(X): # 정복 if F(X)가 간단해졌을 때: return F(X)계산값(int or list or str) else: # 분할 X를 left와 right로 분할. F(left)와 F(right)를 호출 # 조합 return F(left)와 F(right)로 F(x)를 구하는 관계식(재귀) 추후 최적 부분구조(Optimal Substructure)에도 연관 됨. 예제로 연산 문자열이 들어갔을 때 괄호를 치는 경우의 수에 따른 계산값 리스트를 구하는 함수. 각 연산자를 만남에 따라 좌우를 ..

[백준][Python] 9242 폭탄해제

처음에 6으로 나눠떨어져야 한다는 조건 못봐서 실패. 그리고 한참 디버깅코드 안빼고 왜 실패하지?? 고민하다 결국 ans디버깅 코드 넣어논거 발견하고 해결. 코드 더 줄일 수 있을 것 같지만 그냥 제출. matrix = [input() for _ in range(5)] N = (len(matrix[0])//4)+1 zero = ['***','* *','* *','* *','***'] one = [' *',' *',' *',' *',' *'] two = ['***',' *','***','* ','***'] three = ['***',' *','***',' *','***'] four = ['* *','* *','***',' *',' *'] five = ['***','* ','***',' *','***'] s..

[백준][Python] 4446 ROT12

처음엔 ord chr 쓰는줄 알았는데 도저히 그쪽으론 설계가 안돼서 노가다로 풂. 문제 함정은 testcase는 하나 띡 놓고 실상은 입력이 겁나 많이 들어간다는 것. 때문에 while로 무한 반복에 try except까지 써서 멈출 수 있게 해줘야 정답처리가 된다. moem = ['a','i','y','e','o','u'] zaem = ['b','k','x','z','n','h','d','c','w','g','p','v','j','q','t','s','r','l','m','f'] # 무한입력. try except while 1: try: S = input() ans = "" for i in range(len(S)): if S[i].lower() in moem: if S[i].isupper(): k = ..