목록전체 글 (119)
이것저것
3. Network Layer 우리가 주소창에 www.naver.com을 입력하면, 이 영어 주소는 IP주소로 변환되어 사용된다. (DNS) 결론적으로, 상대방의 IP주소를 알고 있어야 메시지(데이터)를 보낼 수 있다. (우리는 모두 www.naver.com의 IP주소를 알고 있는 것이다.) 23.37.87.61 data 를 패킷이라 부른다. A가 라우터 (가)에게 패킷을 전달 패킷을 받은 (가)는 패킷을 열어서 목적지 IP 주소를 확인한다. (가 : 나랑 연결된 컴퓨터 중에서는 23.37.87.61인 컴퓨터가 없네?) (가)는 데이터를 다시 포장하여 자신과 연결되어 있는 유일한 라우터인 (마)에게 전달 패킷을 받은 (마)는 (가)가 그랬던 것과 마찬가지로 패킷을 열어서 목적지 주소를 읽는다. 목적지가 ..
1. Physical Layer Q : 두 대의 컴퓨터가 통신하려면? 모든 파일과 프로그램은 0과 1의 나열 결국 0과 1만 주고받을 수 있으면 통신 가능하다. 010101 을 보내고 싶으면 아날로그 신호로 수신자 컴퓨터에게 보낸다. 수신자 컴퓨터는 그걸 해석해 010101을 이해한다. 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려보냄 (encoding) 아날로그 신호가 들어오면 0과 1의 나열로 해석(decoding) 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고받을 수 있게 해주는 module (모듈이란 프로그래밍에서의 함수와 비슷) 데이터를 보내는 컴퓨터 (1계층 encoder) → 전선 → 데이터를 받는 컴퓨터 (1계층 decoder) 1계층 모듈은 하드웨어적으로 구현되어 있..
문제 크기가 N인 수열 A = A1, A2, ..., AN이 있다. 수열의 각 원소 Ai에 대해서 오큰수 NGE(i)를 구하려고 한다. Ai의 오큰수는 오른쪽에 있으면서 Ai보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오큰수는 -1이다. 예를 들어, A = [3, 5, 2, 7]인 경우 NGE(1) = 5, NGE(2) = 7, NGE(3) = 7, NGE(4) = -1이다. A = [9, 5, 4, 8]인 경우에는 NGE(1) = -1, NGE(2) = 8, NGE(3) = 8, NGE(4) = -1이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,..
문제 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저의 배치는 다음 조건을 만족한다. 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있다. - 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓는다. 각 쇠막대기를 자르는 레이저는 적어도 하나 존재한다. 레이저는 어떤 쇠막대기의 양 끝점과도 겹치지 않는다. 아래 그림은 위 조건을 만족하는 예를 보여준다. 수평으로 그려진 굵은 실선은 쇠막대기이고, 점은 레이저의 위치, 수직으로 그려진 점선 화살표는 레이저의 발사 방향이다. 이러한 레이저와 쇠막대기의 배치는 다음과 같이 괄호를 이용하여..
문제 N 개의 막대 기둥이 일렬로 세워져 있다. 기둥들의 폭은 모두 1 m이며 높이는 다를 수 있다. 이 기둥들을 이용하여 양철로 된 창고를 제작하려고 한다. 창고에는 모든 기둥이 들어간다. 이 창고의 지붕을 다음과 같이 만든다. 지붕은 수평 부분과 수직 부분으로 구성되며, 모두 연결되어야 한다. 지붕의 수평 부분은 반드시 어떤 기둥의 윗면과 닿아야 한다. 지붕의 수직 부분은 반드시 어떤 기둥의 옆면과 닿아야 한다. 지붕의 가장자리는 땅에 닿아야 한다. 비가 올 때 물이 고이지 않도록 지붕의 어떤 부분도 오목하게 들어간 부분이 없어야 한다. 그림 1은 창고를 옆에서 본 모습을 그린 것이다. 이 그림에서 굵은 선으로 표시된 부분이 지붕에 해당되고, 지붕과 땅으로 둘러싸인 다각형이 창고를 옆에서 본 모습이다..
#include #include #include #include #include #include #include #include #include #include using namespace std; double sansulAvg(vector v){ double sum = 0; for(int i=0;iN; vector v; for(int i=0;i>a; v.push_back(a); arr[a+4000]++;//음수값이 나올수도 있으니깐 } cout
문제 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ K < N ≤ 500,000) 둘째 줄에 N자리 숫자가 주어진다. 이 수는 0으로 시작하지 않는다. 출력 입력으로 주어진 숫자에서 K개를 지웠을 때 얻을 수 있는 가장 큰 수를 출력한다. 예제 입력 1 4 2 1924 예제 출력 1 94 풀이 그리디 알고리즘과 자료 구조를 사용해서 해결할 수 있는 문제 Deque를 사용 (Deque는 스택+큐의 성질을 갖는다) 데크가 비어있을 경우, input[i]를 맨 끝에 집어 넣는다. 데크가 비어있지 않을 경우, 데크의 맨 끝 요소와 input[i]에 대해 비교를 한다. 데크의 맨 끝 요소가 작을 경우..
문제 N×N의 표에 수 N2개 채워져 있다. 채워진 수에는 한 가지 특징이 있는데, 모든 수는 자신의 한 칸 위에 있는 수보다 크다는 것이다. N=5일 때의 예를 보자. 12 7 9 15 5 13 8 11 19 6 21 10 26 31 16 48 14 28 35 25 52 20 32 41 49 이러한 표가 주어졌을 때, N번째 큰 수를 찾는 프로그램을 작성하시오. 표에 채워진 수는 모두 다르다. 입력 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. 출력 첫째 줄에 N번째 큰 수를 출력한다. 예제 입력 1 5 12 7 9 15 5 13 8 11 19 6 21 10 26 3..