분류 전체보기
[백준 1322] X와 K (C++)
1322번: X와 K 첫째 줄에 X와 K가 주어진다. X와 K는 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net X + Y = X | Y 위 식의 의미는 다음과 같다. 두 수를 2진수로 바꾸었을 때 x와 y가 가진 비트 '1'의 위치가 모두 서로 다르다는 뜻이다. 같은 말로 X의 비트가 0인 위치에만 1이 채워져 있는 수가 Y가 될 수 있는 수이다. 문제를 풀기 위해서는 위 아이디어를 다음과 같이 응용하면 된다. 7번째 Y 값을 찾고싶을 때 7은 2진수로 바꾸면 111 이다. X를 5로 가정하면 X는 ..000101 이라고 생각할 수 있다. 여기서 비트 1의 위치는 보지않고 0인 위치를 숫자가 들어갈 수 있는 위치라고 생각하자. 따라서 7이라는 숫자가 들어갈 수 있는 비..
[Network] 네트워크 계층 : NAT(Network Address Transmission)
모든 IP 활용 장치에는 IP 주소가 필요하다. SOHO(Small Office, Home Office)네트워크의 확산으로 인해서, SOHO가 장치를 연결하기 위해 LAN을 설치할 때마다 ISP는 모든 SOHO의 IP장치(전화, 태블릿, 게임기, IP TV ..)를 수용할 수 있는 주소 범위를 할당해야 한다. SOHO가 커지면 큰 주소 블록이 할당되어야 한다. 하지만 ISP가 이미 SOHO 네트워크의 해당 주소 범위에 인접한 부분을 할당해버렸다면? 또는 특정 홈 네트워크 소유자가 IP 주소가 어떻게 관리되는지 알고자 한다면? 이러한 상황에서 네트워크 주소 변환(NAT)를 사용해서 주소를 할당할 수 있다. NAT 운영 NAT 가능 라우터는 위 그림의 오른쪽 처럼 홈 네트워크의 일부인 인터페이스를 갖는다. ..
[Network] 네트워크 계층 : 인터넷 프로토콜(IP)
인터넷 네트워크 계층 패킷을 데이터그램이라고 부른다. IP의 사용에 대해 알아보기 전에 IP 데이터그램이 어떻게 이루어져 있는지 알아보자 IPv4 IPv4 데이터그램의 주요 필드는 다음과 같다. 버전 번호(4비트) : 데이터 그램의 IP 프로토콜 버전을 명시한다. 라우터는 IP의 버전 번호를 확인하여 데이터그램의 나머지 부분을 어떻게 해석할 지 결정한다. 다른 버전의 IP는 다른 데이터그램 형식을 사용한다. 헤더 길이(4비트) IPv4데이터그램은 헤더에 가변 길이의 옵션을 포함하므로 헤더길이 필드를 통해 IP 데이터그램에서 실제 페이로드(예를 들어 데이터그램에 캡슐화 된 트랜스포트 계층 세그먼트)가 시작하는 곳을 결정한다. 대부분 IPv4 데이터그램은 옵션을 포함하지 않으므로 대체로 IPv4 데이터그램 ..
[백준 20928] 걷는 건 귀찮아 (C++)
20928번: 걷는 건 귀찮아 일직선 위에 놓인 $N$개의 지점 $p_i$에는 최대 $x_i$만큼 이동시켜주는 인력거꾼들이 있다. 즉, $p_i$에 있는 인력거꾼은 $p_i$, $p_i+1$, $p_i+2$, $...$, $p_i+x_i$ 중 한 지점까지 승객을 데려다준다. 세상 www.acmicpc.net 1. 현재 인력거에서 M까지 갈 수 있는지 확인한다. M까지 갈 수 있다면 결과 값을 최솟값으로 갱신한다. 2. 현재 인력거에서 갈 수 있는 인력거들을 모두 queue에 넣는다. 이때 가장 멀리있는 인력거 위치 이후부터 찾는다. 인력거를 찾게되면 그때마다 가장 멀리있는 인력거의 위치를 갱신해준다. 알고리즘 과정 입력 4 10 1 3 5 7 4 6 5 2 파란색 동그라미는 인력거의 위치를 의미한다. 파..
[컴퓨터 구조] 산술 연산(덧셈, 곱셈)
덧셈 덧셈을 수행하는 하드웨어를 병렬 가산기라고 부른다. 병렬 가산기는 비트 수만큼의 전가산기들로 구성된다. 반가산기 1비트 2진수 2개를 더한 합과 올림수를 구하는 하드웨어 1 + 1 => 결과값 1과 올림수 1을 출력한다. 전가산기 1비트 2진수 2개와 이전 단게의 올림수 1개, 총 3개의 이진수를 더하여 합과 올림수를 구하는 하드웨어 이전에 올라온 비트 1 + (0 + 1) 현재 위치의 비트 => 결과값 1과 올림수 1을 출력한다. 전가산기는 올림수 비트를 전송하는 선에 의해 서로 연결된다. 따라서 많은 비트를 연산하기 위해서 같은 방법으로 전가산기들을 계속 연결해 구성할 수 있다. 병렬 가산기 상태 레지스터 V : 오버플로우(oVerflow) 비트 (1인경우 오버플로우가 발생했다는 뜻이다) Z :..
[Python] Decorator (데코레이터)
데코레이터에 대해 알기전에 아래 두 포스팅을 보고 오면 이해가 빠릅니다. [Python] First-Class Function (일급 함수) 프로그래밍 언어가 함수를 일급 객체로 취급하는 경우 일급 함수를 지원한다고 한다. Python 은 일급 함수를 지원한다. (Java의 함수는 1급 객체가 아니다. Kotlin의 함수는 1급 객체라고 한다.) 일급 hyeo-noo.tistory.com [Python] Closure (클로저) 클로저를 이해하기 위해서는 일급 함수, 일급 객체에 대한 이해가 필요하다. 만약 일급함수, 일급객체를 모른다면 아래 포스팅이 도움이 될 수 있다. [Python] First-Class Function (일급 함수) 프로그래 hyeo-noo.tistory.com 데코레이터는 크게 ..
[Python] Closure (클로저)
클로저를 이해하기 위해서는 일급 함수, 일급 객체에 대한 이해가 필요하다. 만약 일급함수, 일급객체를 모른다면 아래 포스팅이 도움이 될 수 있다. [Python] First-Class Function (일급 함수) 프로그래밍 언어가 함수를 일급 객체로 취급하는 경우 일급 함수를 지원한다고 한다. Python 은 일급 함수를 지원한다. (Java의 함수는 1급 객체가 아니다. Kotlin의 함수는 1급 객체라고 한다.) 일급 hyeo-noo.tistory.com 클로저란? 클로저는 외부 함수에 접근할 수 있는 내부 함수 혹은 이러한 원리를 칭하는 용어이다. 외부 함수는 외부 함수 자신의 지역변수를 사용하는 내부함수가 소멸될때까지 소멸되지 않는다. 예를 들어 임의의 A함수 내부에 다른 B함수가 있다면 B함수..
[Python] First-Class Function (일급 함수)
프로그래밍 언어가 함수를 일급 객체로 취급하는 경우 일급 함수를 지원한다고 한다. Python 은 일급 함수를 지원한다. (Java의 함수는 1급 객체가 아니다. Kotlin의 함수는 1급 객체라고 한다.) 일급 객체(First-Class Citizen)란? 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. 1. 변수나 데이터 구조에 할당할 수 있다. 2. 객체의 인자로 넘길 수 있다. 3. 객체의 리턴 값으로 리턴이 가능해야 한다. 위 3가지 조건을 만족하면 1급객체라고 할 수 있다. 일급 함수의 속성 함수는 Object 유형의 인스턴스이다. 함수를 변수에 저장할 수 있다. 함수를 다른 함수에 매개변수로 전달할 수 있다. 함수에서 함수를 반환할 수 있다. List, HashT..
[컴퓨터 구조] 산술 연산 (Shift)
Logical shift(논리적 시프트) 논리적 시프트 연산은 레지스터 내의 데이터 비트들을 왼쪽, 오른쪽으로 한 칸씩 이동시키는 동작이다. 110011을 left shift 하면 100110이 된다. 101011을 right shift 하면 010101이 된다. 시프트되어 갈 곳을 잃은 비트는 버려지게 되고, 비어있는 비트는 0으로 채워진다. circular shift(순환 시프트) 최상위, 최하위 비트를 버리지 않고, 반대편 끝에 있는 비트 위치로 들어가게 한다. 1010을 circular left shift하면 0101이 된다. 1101을 circular right shift하면 1110이 된다. 논리적 시프트연산과 순환 시프트 연산을 이용하면, 두 레지스터들 간에 직렬 데이터 전송이 가능하다. 시..
[Django] DataFrame to CSV (download)
개요 1. Django에서 DB의 data를 추출해서 DataFrame으로 만든다. 2. 만들어진 DataFrame을 한글파일명을 가진 csv파일로 변환해서 내보낸다. dataframe to csv를 수행할 정보에 대해 아주 간단하게 요약한 class 다이어그램이다. Question이 다수 있을 것이고, 지원자들은 특정 Question에 대해서 Answer를 남길 것이다. 지원일자 이름 생년월일 Question1.content Question2.content ... 0 2021-10-11 23:56:23 김 1998.09.09 ~~ ** ... 1 2021-10-13 13:54:11 이 1999.09.09 %% ## .... 2 2021-10-14 08:10:45 박 2000.09.09 && @@ .....