4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 +..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Ubyhb/btq9ENSrHsV/6xQTV80pEgTc0iU99VFvH0/img.jpg)
1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 문제 재원이는 한 도시의 시장이 되었다. 이 도시에는 도시를 동쪽과 서쪽으로 나누는 큰 일직선 모양의 강이 흐르고 있다. 하지만 재원이는 다리가 없어서 시민들이 강을 건너는데 큰 불편을 겪고 있음을 알고 다리를 짓기로 결심하였다. 강 주변에서 다리를 짓기에 적합한 곳을 사이트라고 한다. 재원이는 강 주변을 면밀히 조사해 본 결과 강의 서쪽에는 N개의 사이트가 있고 동쪽에는 M개의 사이트가 있다는 것을 알았다. (N ≤ M) 재원이는 서쪽의 사이트와 동쪽의 사이트..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/F4QRn/btq2NEHH5JN/Ca3B1a75RuYahMtjT57br1/img.png)
ICMP(Internet Control Message Protocol) : 인터넷 환경에서 오류에 관한 처리를 지원 ICMP 메시지 - DESTINATION UNREACHABLE: 수신 호스트에 접근이 불가능 - SOURCE QUENCH: 네트워크에 필요한 자원 부족으로 패킷 폐기 - TIME EXCEEDED: 시간 초과로 패킷 폐기 (TTL이 0이 되는 경우) - ECHO REQUEST/ECHO REPLY: ping 프로그램에 사용 - TIMESTAMP REQUEST/TIMESTAMP REPLY: 네트워크 지연을 측정 ICMP 헤더 형식 - 처음 8 바이트는 모든 메시지에 반드시 포함됨 - Type: 메시지를 구분 - Code: 메시지 내용에 대한 자세한 정보 - Checksum: 전체 메시지에 대한 ..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/N4vXz/btq2Rkoa3XT/Eo5YRPjIQhK3YERNLT3UD1/img.png)
ARP(Address Resolution Protocol) - 수신 호스트의 IP 주소를 통해 수신 호스트의 MAC 주소를 제공 - ARP request라는 특수 패킷을 브로드캐스팅 - IP 주소에 해당하는 호스트만 ARP reply로 MAC 주소를 회신 - 브로드캐스팅 과정에서 수신 호스트가 얻은 송신 호스트의 MAC 주소와 IP 주소 매핑 값은 자동 저장 RARP(Reverse Address Resolution Protocol) - 하드 디스크가 없는 시스템은 송신자 자신의 IP 주소를 알 수 없음 - 송신 호스트의 MAC 주소를 통해 송신 호스트의 IP 주소를 제공 - RARP 를 전담하는 서버가 있어야 함 - RARP를 통해 자신의 IP 주소를 얻은 후 미리 정해진 호스트로부터 자신의 부트이미지를..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/beNPxj/btq2Nynpash/4Ve2TBMNB3NxsyvB85cFCK/img.png)
IPv6 (IPv4와 비교) 1) 주소 공간 확장 - IPv4의 32 비트에서 128 비트로 확장 - 최대 2128개의 호스트를 지원 2) 헤더 구조 단순화 - 오류 제어 등의 오버헤드를 줄여 프로토콜의 전송 효율 향상 3) 흐름 제어 기능 지원 - 흐름 제어 기능을 지원하는 필드(Flow Label)를 추가하여 일정 범위 내에서 예측 가능한 데이터 흐름을 지원 - 실시간 멀티미디어 응용 환경을 수용 IPv6 헤더 형식 - 헤더 40바이트 중 32바이트를 주소 공간으로 사용 - 필요 시 기본 헤더 뒤에 여러 개의 확장 헤더를 지원 - DS/ECN: 차등 서비스 및 혼잡제어 - Flow Label: 음성, 영상 등 실시간 서비스가 필요한 응용 환경에서 사용 현재 필드를 지원하지 않는 호스트 혹은 라우터 패..
대표적인 IPC 및 동기화 기법 1) 파이프(pipe) --- 운영체제 영역 이용 2) 메시지 큐(message queue) --- 운영체제 영역 이용 3) 공유 메모리(shared memory) --- 사용자 영역 이용 4) 세마포어(semaphore) --- 동기화 기법 기본적인 IPC 과정 ① 공유 메모리 확보 ② 공유 메모리 접근 ③ 공유 메모리 반납 1-1) 이름 없는 파이프 (unnamed pipe) ① 공유 메모리 확보 - 파일 디스크립터 번호를 저장하기 위한 정수형 배열 변수 선언한다. (int pipefd[2];) - pipe() 함수를 사용하여 커널 영역에 파이프 채널을 생성한다. (pipe(pipefd);) - fork() 함수를 사용하여 자식 프로세스를 생성한다. ② 공유 메모리 사..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/brE4L2/btq2QTD48sa/FCWCyiazCvNT5rjQjOTkW0/img.png)
프로세스 간 통신(IPC: Inter-process Communication) 1) 프로세스 간에 데이터를 주고 받는다 (write/read) 2) 프로세스는 독립적이다 (-> 다른 프로세스 영역을 접근(access)할 수 없다) 3) 공유 메모리가 필요하다 공유 메모리가 커널 영역에 존재 -> 동기화가 필요하지 않음 공유 메모리가 사용자 영역에 존재 -> 동기화가 필요함 4) 임계영역(critical section)이 존재함. 메시지 전송(message passing) 방식 - 커널(운영체제) 영역의 일부분을 공유 메모리로 이용한다. - 운영체제에서 임계 영역에 대한 동기화를 해결해 준다. - 메시지가 세 곳에 존재한다. ① 송신 프로세스는 자신의 데이터 영역에 메시지를 작성한 후, send() 함수를..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/NWAaD/btq2OpDmmcl/ajJKwK5dVaLPUOkri4cjE0/img.png)
DHCP (Dynamic Host Configuration Protocol) 프로토콜 - IP 주소를 여러 컴퓨터가 공유해서 사용 - 서버에 존재하는 풀(pool)에서 IP 주소를 가져옴 - DHCP 메시지 -> 응용 계층 DHCP 프로토콜의 주요 메시지(Options 필드) - DHCP_DISCOVER : 클라이언트가 DHCP 서버를 찾기 위한 브로드캐스트 메시지 - DHCP_OFFER : 클라이언트의 DHCP_DISCOVER 메시지에 대한 응답으로, DHCP 서버가 응답함 - DHCP_REQUEST : DHCP 서버에 DHCP_REQUEST 메시지를 전송하여 권고한 주소를 사용한다고 알림 - DHCP_ACK : 권고한 IP 주소를 사용 가능하면 메시지를 전송 - DHCP_NACK : 클라이언트가 DH..