분류 전체보기 10

[C++][boost] 구조체 멤버 반복문으로 순회하기(구조체에 iterator 적용)

현재 진행중인 프로젝트에서 구조체 멤버 변수의 값이 달라졌을 경우에 로그를 남기는 일을 해야했습니다. 변경 이전의 구조체와 변경 이후의 구조체를 파라미터로 받는 함수를 만들어 각 멤버를 비교, 값이 달라진 경우 로그를 삽입하도록 구현하여 진행하였습니다. 구현이 어렵지는 않았으나 정말 너무 귀찮고 하기 싫었습니다. 그 이유는 구조체의 종류가 너무 많았기 때문입니다. 배열의 값을 비교하듯 반복문을 비교하면 얼마나 좋을까 생각을 하면서 진행하던 중 설마 없을까 싶은 생각에 열심히 검색해보니 boost 라이브러리를 통해 가능하다는 사실을 알았습니다(iterating over a struct in c++). Boost Fusion을 사용한 구조체 iterator 적용 해답은 Boost Fusion의 Adapt S..

Queuing Delay와 Packet Loss

이전에 알아보았던 nodal delay 에서 가장 중요한 것을 하나 꼽으라 하면 단연 Queuing Delay 를 꼽을 수 있을 것입니다. 이전에 Packet Switching을 다루면서 Queuing Delay와 Packet Loss에 대해 간략하게 다룬적이 있었지만, 중요한 만큼 한번 더 다루어 보려고 합니다. Queuing Delay Queuing Delay가 다른 delay들과 비교했을 때 가지는 차별점은 패킷마다 달라질 수 있다는 점입니다. 이 때문에 queuing delay의 경우 평균, 분산 등의 통계적인 방식을 이용해서 나타내곤 합니다. 그렇다면 우리의 최대 관심사인 Queuing Delay는 과연 언제 커지고, 언제 무시할 수 있는 수준이 될까요? Queuing Delay는 queue에 ..

네트워크 딜레이(Network Delay)의 4종류 - Processing, Queuing, Transmission, Propagation Delay

Delay(지연)이란 사전적으로 "무슨 일을 더디게 끌어 시간을 늦춤. 또는 시간이 늦추어짐" 라는 뜻을 가지고 있습니다. Network Delay 즉 네트워크 지연은 송신된 데이터가 모종의 이유로 예정보다 늦게 수신되는 것을 말합니다. 지연을 발생시키는 요소에는 여러가지가 존재하지만 네트워크에서는 이러한 지연을 보통 4종류로 구분하곤 합니다. 이번엔 Packet-Swithcing Network에서 발생 가능한 4종류의 Network Delay에 대해 알아보겠습니다. 그림 1. 은 Packet-Switching Network에서 발생하는 Delay를 나타낸 그림입니다. 영어로는 Nodal Delay라고 표현을 하고 전체 지연시간이라 이해하시면 좋을 것 같습니다. A 또는 B 와 같은 Upstream No..

카테고리 없음 2023.08.07

고액 연봉을 받게 해주는 부트캠프에 관하여

"한국 평균 연봉 3,100만원 한국 개발자 평균 연봉 7,500만원" 우연히 본 어느 코딩 강의 광고의 문구였습니다. -원하는 곳에서 자유롭게 프로젝트 단위로 일하고 -쉬고 싶을 때 쉴 수 있고 -여행 다니면서 일할 수 있고 -호캉스, 카페 투어 다니면서 일할 수 있는 직업! -그러면서 소득이 높은 직업! 7500이라는 높은 평균연봉에 말도 안되는 워라밸을 보장해주는 직업. 이 광고를 본 제 친구는 꼭 메이플스토리 직업추천 같다고 하더군요. "사냥도 좋고, 보스도 좋고, 스킬 이펙트도 이쁜 그 직업!!" 이 문구들이 전부 진짜라고 믿는 사람은 없을 것이라 생각합니다. 솔직히 누가 봐도 말이 안되지 않습니까? 너무 말도 안되기 때문에 잘 모르는 사람도 거짓말이네 하면서 넘길 수 있을겁니다. 하지만 저는 ..

잡소리 2023.07.09

[C++] 순열(Permutation)과 조합(Combination)

순열과 조합 순열과 조합을 구하는 알고리즘은 코딩테스트에서 단독으로 출제되는 경우가 많지는 않지만 bfs, dfs처럼 시뮬레이션 유형에서 풀이를 위해 사용되는 경우가 많습니다. 그렇게 자주 쓰이지는 않지만 종종 등장하고, 모르면 풀지못하는데 한동안 안쓰다 보면 시험장에서는 까먹는 경우가 많습니다. 원리를 이해하고 있으면 몇번의 시행착오를 거쳐서 구현하고 사용 할 수 있지만 그때마다 '아 바로 기억 났으면 시간 훨씬 아꼈을텐데' 하는 생각은 많은 아쉬움을 남기곤 합니다. 때문에 이번 기회에 순열과 조합을 정리하고 넘어가려고 합니다. 순열과 조합을 구하는 알고리즘이 재귀와 백트래킹이 활용되는 대표적인 예시인 만큼 두가지에 대한 이해가 부족하면 조금 어렵게 느껴지실 수 있으니 혹 모르신다면 숙지하고 오시는 것..

패킷 스위칭 vs 서킷 스위칭 (Packet Switching vs Circuit Switching)

이전까지 패킷 스위칭과 서킷 스위칭에 대해서 알아보았습니다. 그래서 이번에는 패킷 스위칭과 서킷 스위칭의 차이와 과연 어떤 방식이 더 효율 적인지 알아보고자 합니다. 각 방식이 어떤 내용인지 잘 모르시겠다면 이전 게시글을 참고해보시면 좋을 것 같습니다. 2023.05.17 - [컴퓨터 네트워크] - 패킷 스위칭(Packet Switching) 패킷 스위칭(Packet Switching) 패킷이란? 네트워크 애플리케이션에서는 end system 끼리 메시지 교환이 일어나게 됩니다. 목적지 까지 메시지를 전송하기 위해서는 메시지를 작은 조각으로 쪼개게 되고, 우리는 이를 패킷이라고 dsaf2007.tistory.com 2023.06.29 - [컴퓨터 네트워크] - 서킷 스위칭(Circuit Switching..

서킷 스위칭(Circuit Switching)

네트워크를 통해 데이터를 주고 받을 때 주로 패킷 스위칭과 서킷 스위칭을 사용합니다. 이전에 패킷 스위칭에 대해 알아보았기 때문에 이번에는 서킷 스위칭에 대해 알아보러 합니다. 패킷 스위칭 알아보기 2023.05.17 - [컴퓨터 네트워크] - 패킷 스위칭(Packet Switching) 패킷 스위칭(Packet Switching) 패킷이란? 네트워크 애플리케이션에서는 end system 끼리 메시지 교환이 일어나게 됩니다. 목적지 까지 메시지를 전송하기 위해서는 메시지를 작은 조각으로 쪼개게 되고, 우리는 이를 패킷이라고 dsaf2007.tistory.com 서킷 스위칭은 데이터 교환을 위해서 하나의 회선을 할당받습니다. 이 때 서킷 스위칭의 가장 큰 특징은 할당받은 회선을 독점한다는 것에 있습니다. ..

[c++] find_if 함수 사용법 : pair로된 vector find

코딩테스트 문제를 풀다보면 배열 못지 않게 vector를 많이 사용하게 됩니다. 그와 동시에 많은 문제에서 vector안에 값이 존재하는지 여부를 확인해야 하는경우도 굉장히 많습니다. Java처럼 contains가 있으면 물론 매우 좋겠지만(c++ 20 부터는 set에 contains가 있더군요) 그렇지 않은 관계로 find를 많이 사용하게 됩니다. 문제는 pair라던가,, 직접 선언한 클래스라던가,, vector와 함께 사용하게 되면 find함수로는 찾을 수 없다는 것 입니다. 한번은 탐색만 하면 되는데, 방법을 몰라서 문제를 포기했던 경험도 있습니다. 에이~ 해봤자 얼마나 자주 쓰겠어~ 할 수 있겠지만, 바로 어제 본 코테에서도 필요했던 것을 생각하면, 한번쯤 알아두고 넘어가는 것이 좋을 것 같습니다..

패킷 스위칭(Packet Switching)

패킷이란? 네트워크 애플리케이션에서는 end system 끼리 메시지 교환이 일어나게 됩니다. 목적지 까지 메시지를 전송하기 위해서는 메시지를 작은 조각으로 쪼개게 되고, 우리는 이를 패킷이라고 부릅니다. 패킷은 각 커뮤니케이션 링크의 최대 전송속도와 동일하게 링크를 타고 전송이 되기 때문에 패킷의 전송 시간은 L / R ( L : 전체 패킷의 비트 수, R : 링크의 전송속도 bits/sec) 만큼 걸리게 됩니다. Store-and-Forward (축적 교환) 패킷은 어떤 방식으로 전송이 될까요? 대부분의 경우에 패킷은 store-and-forward(축적 교환) 방식을 이용합니다. store-and-forward 방식에서는 패킷 스위치가 패킷의 첫 비트를 outboud link에 전송하기 위해서는 전..

알고리즘 시간복잡도

코딩테스트 문제 풀이를 할때에는 제한 시간내에 모든 테스트케이스가 통과해야만 한다. 코드를 짜기 전 수행시간을 정확하게 측정하기에 앞서 대략적인 수행시간을 판단하기 위해서 알고리즘의 시간복잡도를 활용하곤 한다. 대게 입력의 크기에 따라 수행 횟수가 정해지는 반복문이 알고리즘에 존재한다. 따라서 주로 알고리즘의 수행시간 == 반복문이 수행되는 횟수 라고 생각할 수 있다. 선형시간 알고리즘 이동 평균(moving average) : 주식의 가격, GDP 등 시간에 따라 변화하는 값들의 관찰에 유용 M-이동 평균은 마지막 M개의 관찰 값의 평균으로 정의 ex) 몸무게의 이동 평균 이중 반복문을 통해서 구현하는 경우 i번째 달에서 M만큼 뺀 인덱스부터 시작하여 반복해야 하므로 N*M - M^2 + M번 반복하게..