목록분류 전체보기 (124)
minhui study
Network Architecture 별 패킷 분석 및 ip-mac 표 그리기 & 개념 정리 1_NAT NETWORK ADDRESS TRANSLATION 게스트 OS가 호스트 OS의 NIC을 이용하여 위부와 통신 ▶ 가상머신 내부 네트워크는 Host PC 외부 네트워크 단방향 통신이 가능하다. ▶ Host PC 내의 가상 머신(Guest OS) 간의 통신이 불가능하며 호스트에도 접근할 수 없다. (호스트로부터 게스트에 접근하기 위해서는 포트포워딩이 필요하다.) ▶ VirtualBox는 게스트 내부 네트워크 인터페이스에 하나의 독립된 가상 NAT 라우터를 생성한다. → 가상 머신 내에서는 자체 IP주소를 사용하지만 실제 외부로 나갈 때는 Host PC가 가진 IP주소를 바꿔 달고 나가게 된다. 즉, Gue..
메모리 구조 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있다. 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 다음과 같다. 코드 영역 메모리의 코드 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 부른다. CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 된다. 데이터 영역 메모리의 데이터 영역은 프로그램의 전역 변수와 정적 변수가 저장되는 영역이다. 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다. 힙(heap) 영역 메모리의 힙 영역은 사용자가 직접 관리할 수 있는 그리고 해야만 하는 메모리 영역이다. 힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다. 힙 영역은 메모리의 낮은 주소..
CPU 레지스터란? 레지스터란 CPU 내부에 존재하는 다목적 저장공간이다. CPU가 RAM에 있는 데이터를 Access하기 위해서는 물리적으로 먼 길을 돌아가야 하기 때문에 시간이 오래 걸리지만 레지스터는 CPU와 한 몸이기 때문에 고속으로 데이터를 처리할 수 있다. IA-32 IA-32는 인텔의 32비트 마이크로프로세서에서 사용하는 명령 집합 아키텍처를 말한다. IA-32에서 지원하는 기능은 매우 많고 그 만큼 레지스터의 수도 많다. 어플리케이션 디버깅의 초급 단계에서는 Basic Program Execution Registers에 대해서 알아야 하는데 그 이유는 디버깅 할 때 가장 많이 보게 될 레지스터이기 때문이다. Basic program execution registers Basic Progra..
https://www.acmicpc.net/problem/9009 9009번: 피보나치 문제 피보나치 수 ƒK는 ƒK = ƒK-1 + ƒK-2로 정의되며 초기값은 ƒ0 = 0과 ƒ1 = 1 이다. 양의 정수는 하나 혹은 그 이상의 서로 다른 피보나치 수들의 합으로 나타낼 수 있다는 사실은 잘 알려져 있다. www.acmicpc.net 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... 결론적으로 사용하는 피보나치 수가 최소 개수가 되려면 n보다 같거나 작은 피보나치 수 중 가장 큰 피보나치 수를 사용하고, 이를 반복하면 된다. 가령 n=100이면 89를 사용하고, 남은 11에 대해서 8을 사용하고, 또 남은 3에 대해 3을 사용하면 된다. 100 = 3 + 8 + 89 왜 이렇..
https://www.acmicpc.net/problem/11497 11497번: 통나무 건너뛰기 문제 남규는 통나무를 세워 놓고 건너뛰기를 좋아한다. 그래서 N개의 통나무를 원형으로 세워 놓고 뛰어놀려고 한다. 남규는 원형으로 인접한 옆 통나무로 건너뛰는데, 이때 각 인접한 통나무의 www.acmicpc.net 어떻게 통나무를 배열해야 가장 작은 높이차를 만들 수 있을까? 즉 모든 배열 중에서 최대 높이 차이가 최소인 것을 만들어야 한다. 통나무의 높이를 내림차순으로 정렬하면 처음과 맨끝이 만나게 되므로 차이가 많이 나서 안된다. 그러면 해결 방법은 가장 큰 값을 가운데에 놓고 왼쪽 오른쪽 번갈아 가면서 놓으면 된다. 그렇게 되면 서로 인접한 높이 차이가 오름차순이나 내림차순 정렬을 하였을 때 한 개나..
https://www.acmicpc.net/problem/11508 11508번: 2+1 세일 문제 KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머� www.acmicpc.net 입력 받은 가격들 중 가장 비싼 것들부터 3개씩 묶었을 때 가장 저렴한 가격이 나오므로 내림차순으로 가격을 정렬했을 때 인덱스에서 3을 나누었을 때 나머지가 2인 것들만 가격에 포함시키지 않으면 된다. from sys import stdin n=int(input()) m=list(map(int, stdin.read().split())) m.sort(reverse=True) cost =..
https://www.acmicpc.net/problem/14916 14916번: 거스름돈 첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다. www.acmicpc.net 거스름돈을 못주는 경우는 5원보다 적고 2의 배수가 아닌 경우이므로 1원과 3원일때는 거슬러 줄 수 없다. 그리고 가장 최소의 갯수로 거슬러 주어야 하므로 큰 수인 5부터 나누지만 5로 나눈 나머지가 홀수인 경우에는 나머지에서 5원을 더해주어 5원 대신 나머지+5원을 2원으로 거슬러 주면 된다. n = int(input()) o = n % 5 if(n==1 or n==3): result = -1; elif(o%2==0): result=n//5+o//2 else: result=((n//5)-1)+((o+5)//2) p..
https://www.acmicpc.net/problem/14720 14720번: 우유 축제 영학이는 딸기우유, 초코우유, 바나나우유를 좋아한다. 입맛이 매우 까다로운 영학이는 자신만의 우유를 마시는 규칙이 있다. 맨 처음에는 딸기우유를 한 팩 마신다. 딸기우유를 한 팩 마신 후�� www.acmicpc.net 딸기(0) -> 초코(1) -> 바나나(2) -> 딸기(0) 순으로 우유를 먹어야 하기 때문에 특정 변수를 통해 다음에 어떤 우유를 마셔야 하는지 저장해놓은 다음 현재 우유와 비교하여 같은 때만 1씩 증가시켜 최대 우유를 얼마나 마실 수 있는지 구하면 된다. n = int(input()) c = list(map(int, input().split())) max = 0 for i in range(n)..