프로토콜이란 컴퓨터 상호간 대화에 필요한 통신규약입니다. #include int socket(int domain, int type, int protocol); // success: 파일 디스크럽터 fail: -1 sys/socket.h에서 소켓 함수는 위와 같이 구성되어 있는데, 여기서 첫 번째 인자로 들어가는 domain이 프로토콜 체계를 뜻합니다. 이 헤더파일에 선언되어 있는 프로토콜 체계의 종류는 다음과 같습니다. PF_INET IPv4 인터넷 프로토콜 체계 PF_INET6 IPv6 인터넷 프로토콜 체계 PF_LOCAL 로컬 통신을 위한 UNIX 프로토콜 체계 PF_PACKET Low Level 소켓을 위한 프로토콜 체계 PF_IPX IPX 노벨 프로토콜 체계 프로토콜 체계가 결정되었다고 데이터의 ..
현생
소켓이란, 데이터 송수신에 사용할 수 있는 소프트웨어 장치이며 네트워크 망의 연결에 사용되는 도구입니다. 또, 네트워크를 통한 두 컴퓨터의 연결을 의미하기도 합니다. 다음은 서버 프로그램 구현에 쓰이는 함수들입니다. #include int socket(int domain, int type, int protocol); // success: 파일 디스크럽터 fail: -1 #include int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen); // success: 0 fail: -1 #include int listen(int sockfd, int backlog); // success: 0 fail: -1 #include int accept(int..
https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 알파벳 종류의 최대 개수가 10개라 시간복잡도가 O(n!)인 순열만 구현하면 쉽게 풀 수 있는 문제였습니다. 다만 알파벳에 숫자를 대입해가며 덧셈을 하면 시간이 부족할까봐(해보진 않아서 시간초과가 뜰지 안뜰지는 모르겠습니다) 더 빠르게 계산을 하기 위해 입력부에서부터 처리를 해줬습니다. 먼저 나온 알파벳의 종류를 벡터에 나온 순서대로 중복없이 담고, 그러면 index마다의 알파벳이 특정되므로..
https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 구현이 생각보다 좀 빡센(...) 문제였는데, 군생활때문에 너무 오랜만에(거의 반반년만에) 코딩을 해서 더 심했던 것 같습니다. cctv가 감시한 곳을 visited에 체크하면서 감시된 지역의 수를 세는 쪽으로 풀이의 방향을 잡았습니다. 그래서 먼저 각 cctv의 각각의 방향에 대한 감시할 수 있는 방향(말이 난잡하네요..)을 구할 벡터를 만들었습니다. cctv에는 5가지 종류가 있는데..
https://www.acmicpc.net/problem/5710 5710번: 전기 요금 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 두 정수 A와 B가 주어진다. (1 ≤ A, B ≤ 109) 항상 정답이 유일한 경우만 주어지며, 입력으로 주어지 www.acmicpc.net 구현과 이분탐색을 적절히 섞어놓은 문제였습니다. 아이디어로는 상근이가 아예 전기를 안쓴 경우(0 Wh)부터 전기를 전부 썼을 경우(A Wh) 사이를 이분탐색으로 구하는 것입니다. 이분탐색의 규칙으로는, 중앙값을 상근이가 사용한 전기의 양, 총사용량에서 중앙값을 뺀 값이 이웃이 사용한 전기의 양이고 이웃-상근이의 값이 B이면 이때의 상근이의 전기요금을 반환, 아니면 이분탐색을 하도록 ..
https://www.acmicpc.net/problem/1644 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net 아리스토텔레스의 체로 소수 벡터를 구하고, 투포인터로 답을 구하는 문제였습니다. 문제를 처음 접하고, N의 범위가 400만까지 가는 것을 보고 아리스토텔레스의 체로 구하면 시간이 괜찮을까..? 싶어서 소수판별 관련된 이것저것 찾아봤는데, 아리스토텔레스의 체의 시간복잡도는 Nlog(logN)) 으로 생각보다 좀 많이 빨랐습니다. 머쓱 소수 벡터를 구한 이후로는 여타 투포인터 문제풀이를 하듯, 앞에서부터 포인터 2개로 둘 사이의 총합을 구해가며 총합이 n인 경우의 수를 구하면 됩니다. #include #include u..
https://www.acmicpc.net/problem/2688 2688번: 줄어들지 않아 첫째 줄에 테스트 케이스의 개수 T(1
https://www.acmicpc.net/problem/2668 2668번: 숫자고르기 세로 두 줄, 가로로 N개의 칸으로 이루어진 표가 있다. 첫째 줄의 각 칸에는 정수 1, 2, …, N이 차례대로 들어 있고 둘째 줄의 각 칸에는 1이상 N이하인 정수가 들어 있다. 첫째 줄에서 숫자를 적절 www.acmicpc.net 크기가 N인 배열이 주어지고, 각 칸에는 1 이상 N 이하인 정수가 들어갔을 때, 만들 수 있는 모든 사이클의 노드 개수와 노드를 정렬하여 출력하는 문제이다. 문제를 처음 접하였을 때, 모든 사이클이 아닌 가장 큰 사이클을 찾는 것이라 착각했는데, 경험의 부족인듯 하다(...) 루프 또한 사이클이므로 입력단계에서 미리 처리해주고 루프가 아닌 사이클을 모두 찾는 순서로 구현하였다. #i..