본문 바로가기

[알고리즘]비트마스크(BitMask), 비트조작 - 파이썬 비트마스크란? 비트마스크는 알고리즘이라기 보다는 알고리즘보다는 테크닉 중 하나 정수의 이진수 표현(비트, 0과 1의 binary digits)을 활용한 기법 states = [True, False, False, True, True, False, False, False, True, True] 등으로 상태 표현 가능# 길이가 5인 집합 { 0, 1, 2, 3, 4 } 있다고 하자 arr = [1, 1, 1, 1, 0] # 배열로 표현하면 비효율 { 1, 2, 3, 4 } => 11110 # 메모리 적게 차이하고 효율적 { 1, 2, 3, 4 } => 11110 => (2^4 * 1) + (2^3 * 1) + (2^2 * 1) + (2^1 * 1) = 30 # 10진수 표현 가능 코드를 간결하게 작성 가능하며..
[leetcode]140. Word Break II, 파이썬 문제 릿코드 문제 링크 풀이 난이도 : hard 풀이, dfs 주어진 wordDict을 돌며 해당 단어로 시작하면 재귀로 돌려줌 s가 빈 채로 인자로 넘어왔다는 뜻은 주어진 wordDict 배열 원소로 문장 s가 완성 가능하다는 뜻이므로 ret에 words 리스트를 더해줌 문제 조건에 맞춰 리턴 코드 class Solution: def wordBreak(self, s, wordDict): ret = [] self.dfs(s, wordDict, ret, []) for i, e in enumerate(ret) : ret[i] = ' '.join(e) return ret def dfs(self, s, wordDict, ret, words): if not s: ret.append(words) fo..
[db] 키의 종류 및 구분 -수퍼키, 후보키, 기본키, 대체키, 외래키 키(Key)란? 데이터베이스에서 조건에 만족하는 튜플을 찾거나 정렬할 때, 기준이 되는 속성(attribute)을 말함 즉 무언가를 식별하는 고유한 식별자(identifier) 역할 키의 종류 및 구분 수퍼키(super key)란? 키 만으로 특정한 tuple을 보장한다면 K를 R(attribute의 집합, 릴레이션)의 superkey라고 부른다. 즉 특정가능하면 슈퍼키라 할 수 있다. 따라서 유일성(Unique) 만족, 최소성(Minimality)은 충족 못 함 후보키(Candidate Key)란? 수퍼키 중 최소성(Minimality)을 만족시키는 key 즉 minial super key = candidate key 기본키(Primary key)란? 수퍼키의 특징을 지님(유일성, 최소성, 튜플을 식별..
[DB] Functional dependency(FD), 트리비얼 FD Functional dependency(FD, 함수종속) DB의 R에서 두개의 attribute 집합 간 제한의 일종 어떤 테이블 R의 부분집합을 각각 X와 Y라고 할 때, X의 한 값이 Y에 속한 오직 하나의 값에만 연관될 경우에 Y는 X에 함수 종속되었다 표현. (X→Y라고 표기) 데이터베이스 설계 단계에서 함수 종속 관계를 파악한다면 중복된 데이터를 줄일 수 있다. A determine B = A가 같으면 B가 같은 것. Trivial FD, 트리비얼 FD 만약 Y가 X의 하위 집합이라면 X → Y 가 True인 것은 명확, 이러한 종류의 의존성을 'Trivial' 하다 표현 A->A 이거나 AB->A 같은 당연한 경우를 말하는 것 즉 모든 인스턴스들에 대하여 성립할 때 trivial..
[DB] DB 정규화란? 데이터베이스 정규화 db정규화란? 관계형 데이터베이스에서 데이터를 재설계, 구조화하는 작업 정규형이란 특정 조건을 만족하는 realation의 스키마의 형태를 말하며 제 1 정규형, 제 2 정규형, 제 3 정규형 등이 존재한다. 보통 속성들 사이와 관계를 분석해 여러개의 릴레이션으로 분할하느 과정을 거치므로 이상현상은 줄어드나 속도가 느려짐. 정규화는 왜 필요한가? db 구조가 복잡해질수록 생길 수 있는 중복 저장되며, 저장 공간을 낭비 등을 해결한다. 또한 삽입/갱신/삭제 시 발생할 수 있는 각종 이상현상(Anamolies)들을 방지할 수 있습니다. 따라서 정규화의 목적은 불필요한 데이터를 제거하고 '논리적'으로 데이터를 저장한다는 것에 있다. 각종 이상현상에는 어떠한 것들이 있는가? 삽..
[네트워크]TCP 3-way handshake/4-way handshake TCP는 연결지향 프로토콜이다. 그렇다면 TCP는 어떻게 연결을 설정하고 해제할까? 용어 정리 Handshake : 같은포트에 있고 서로 통신하기 적절한 상태라는 걸 확인하는 행위 TCP 헤더에는 Flag bit이 존재, URG-ACK-PSH-RST-SYN-FIN 순으로 6비트, 해당 위치의 1비트를 1로 해서 정보를 전달 SYN Packet: synchronize sequence numbers ACK Packet: acknowledgements TCP 연결 (3-way handshake) TCP는 양방향이기 때문에 양쪽 모두 통신이 가능한지를 알기 위해서 2-way가 아닌 3-way가 필요함 먼저 open()을 실행한 A 클라이언트가 B 서버에 SYN을 보내고 SYN/ACK를 기다리는 SYN_SENT ..
[네트워크] TCP와 UDP 차이, TCP는 어떻게 순서를 보장하는가? TCP/UDP는 모두 데이터를 보내기 위한 통신 프로토콜 네트워크 5계층 링크 전송계층은 송신자와 수신자를 연결하는 통신서비스를 담당 TCP/UDP는 이 전송계층에서 데이터를 보내기 위해 사용하는 프로토콜 둘 다 데이터 오류 검사를 위한 체크섬필드가 존재(헤더에 존재) UDP 데이터그램 UDP 패킷 메세지 스트림(데이터그램, 하나하나의 패킷이 독립적으로 발신, 수신 단말기의 정보를 저장하고 있음)을 통한 연결 상대적으로 빠름 목적 포트로 패킷을 보냄 브로드캐스트와 멀티캐스트 가능 UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜) 특징 비연결형 프로토콜 흐름제어, 오류제어 또는 손상된 세그먼트의 수신에 대한 재전송을 하지 않음 흐름제어와 혼잡제어 :데이터를 송신과 수신시 데이터..
[네트워크]GET과 POST의 차이 HTTP란? HTTP는 일종의 프로토콜로 클라이언트와 서버 사이에 요청과 응답 과정을 통해 데이터를 주고 받을 수 있음 클라이언트가 HTTP 프로토콜을 통해 서버에게 요청을 보냄 HTTP 요청에 포함되는 HTTP 메소드를 통해 서버가 응답하기 위해 해야 할 행동을 알 수 있음 HTTP 요청 메시지는 시작줄-헤더-본문으로 구성되며 시작줄에 첫번째 부분이 메소드 이 HTTP 메소드 중 자주 쓰이는 GET과 POST의 차이점은 무엇일까? HTTP 요청 메서드 클라이언트 측에서 서버가 리소스에 대해 수행해주길 원하는 동작 GET, HEAD, POST, PUT, PATCH 등 요청 메소드의 위치 : HTTP 요청 메세지의 첫째줄 HTTP 메시지의 구분 시작줄(어떤 메시지인지), 헤더 블록(속성), 본문(데이터 내..