분류 전체보기 (72) 썸네일형 리스트형 [Network] - Nagle 알고리즘 네트워크 공부를 하다가 책에서 Nagle 알고리즘이라는 개념이 나와서 좀 더 찾아보고 이해한 내용에 대해 정리해 보고자 한다. Nagle 알고리즘은 네트워크상에서 돌아다니는 패킷들이 흘러 넘치는 것을 막기 위해서 사용되는 알고리즘 입니다. 이는 TCP/IP 상에서 적용되는 단순한 알고리즘으로, 간단히 말하면, 데이터를 전송 할때 적은 양의 데이터를 여러번에 나눠서 보내는 것이 아니라 한번에 많은 양의 데이터를 모아 보내서 네트워크의 효율성을 높이는 알고리즘 입니다. 처음에는 'TCP 소켓의 특징이 아닌가?' 라고 생각을 했는데, 그건 기본적으로 TCP소켓은 Nagle 알고리즘을 적용해서 데이터를 전송하기 때문에 그렇다고 합니다. int opt_val = 1; setsocketopt(sock, IPPROT.. [백준/c++] - 13305 주유소 https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 매 순간 마다 최선의 것을 택해서 최소 혹은 최대의 것을 구하는 그리디 알고리즘 문제 입니다. 처음에는 dfs나 dp등 다른 방법으로 구현이 가능할 것 같았지만, 문제에 제시된 조건에 도시의 수가 이 방법으로는 시간 초과가 날 것같아 그리디 알고리즘으로 구하려고 방향을 바꿨습니다. #include #include #include using namespace std; int main(.. [백준/c++] - 10844 쉬운 계단 수 https://www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 다이나믹 프로그래밍을 이용하는 문제로, 1부터 100사이 길이의 숫자중에 각 자릿수가 1씩만 차이나는 수의 개수를 구하는 문제입니다. 근데 문제는 이 문제가 dp를 사용하는 문제인지를 판단하는게 어렵다는 거;; 그래서 문제를 처음 접했을 때, 이전에 공부했던 백트래킹 기법이 잘 어울리는 것 같아 적용을 해보려고 했으나, 길이가 100인 수의 개수를 구한다고 가정했을 때, 한가지 경우의 수를 구하는 데에만 함수를 100번 호출한다. 길이가 100인 수를 백트래킹으로 계산하면 로그를 써야할 정도의 횟수만큼 함수를 .. [백준/c++] - 15650 N과 M(2) https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹에 대해 공부하면서 풀었던 문제입니다. N과 M(1)과 다른점이라면 중복된 수열을 제외하고 출력한다는 점입니다. #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; int N; int M; vectorans; vectorans_check; vectorans_tmp; void backTracking(.. [알고리즘 정리] - dfs vs 백트래킹 https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백준에서 이 문제를 풀면서 백트래킹에 대해 학습을 하였다. 분명 이전에 공부했던 내용이지만, 코드로 구현하는 방법이 떠오르질 않았다. 그래서 이번에 공부하면서 알았던 것들을 정리해 보고자한다. #include #include #include using namespace std; void printArr(vector& choose, vector& visited, int stack, int num).. [알게 된 것] - <unistd.h> 헤더 파일 책으로 공부하면서 #include 라는 헤더 파일을 포함하는 예제가 있었다. 헌데 이 헤더 파일은 리눅스에서만 지원하는 헤더파일로, 다양한 필수 posix 함수와 상수가 포함된 라이브러리다. 윈도우에서는 쓸일이 없다고 한다. VS로만 코딩을 했던 입장에서 문제를 간단히 해결하려면 io.h 헤더 파일로 교체하면 된다. 다만, 리눅스에서만 지원하는 라이브러리는 한두개가 아니므로, 이런 예제는 그냥 의도대로 리눅스에서만 돌리는게 좋을 듯 하다... [백준/c++] - 1436 영화감독 숌 https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 666이 포함된 숫자를 크기 순서대로 세는 문제입니다. #include #include using namespace std; int main() { int input, series = 0; cin >> input; int count = 666; while (input != series) { string num = to_string(count); // 검사하기 위해 문자열로 변환 for (int .. [백준/c++] - 11729 하노이 탑 이동 순서 유명한 수학 문제인 하노이 탑에 대한 알고리즘 문제 입니다. 원반을 하나씩 옮길 수 있을 때, 주어진 입력에 대해서 원반의 최소 이동 횟수와 이동 과정을 출력 하는 것이 요구 사항입니다. 사실 하노이탑 알고리즘 같은 것이 따로 존재 하는지 몰라서 여러 방법으로 30분 정도 생각해 봤는데 도저히 떠오르지 않아 풀진 못했습니다. 규칙이 있는 것은 아닌것 같고, DFS를 이용하면 정답을 구하지 못하고 루프에 빠질 것 같아서, BFS를 이용해 보려고 했으나... 이런 식으로 구현 해버리면 문제가 너무 복잡해진다고 판단했습니다. 그렇게 하노이의 탑 알고리즘을 적용하여 문제를 풀면 이와 같은 간단한 코드가 나오고, 실제로 대부분의 정답 코드들과 인터넷에 떠도는 정답들도 이런 형태의 코드로 구현한것을 확인했습니다. .. 이전 1 ··· 6 7 8 9 다음