• (프로그래머스 코딩테스트 고득점 kit) BFS/DFS Level3 네트워크

    문제 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수...


  • (리눅스 시스템 프로그래밍) OS Multithread Programming + C 예제코드

    Thread란? Process 내부에 있는 single sequence stream이다. Process의 특징을 가지고 있기 때문에 lightweight process라고 불리기도 한다. Thread와 Process의 차이 Thread는 완전히 independent하지 않다. 다른 threads의 resource를 나눠쓴다.(code section, data section, resources) 하지만 여전히 개별 PC(program counter), register set, stack space를 가지고 있다. 왜 Multithreading을 하는가? 병렬구조를 사용하여 application을 향상시킨다. 예를...


  • (리눅스 시스템 프로그래밍) OS Socket Programming + C예제코드

    Socket Programming이란? 두개의 노드를 네트워크 상에서 커뮤니케이션하는 방법 중 하나이다. 하나의 socket이 IP의 특정 port에서 listen하고 다른 하나의 socket이 connection을 만들어서 접근한다. 주로 Server가 listener socket의 역할을 하고 client가 접근하는 socket이 된다. Stages for Server int socket_created = socket(domain, type, protocol); domain : communication domain을 의미(주소 체계 나타내는 프로토콜) 예를...


  • (리눅스 시스템 프로그래밍) OS PIPE + C예제코드

    Pipe란? OS에서 한 프로그램 프로세스에서 다른 프로세스로 정보를 전달하는 기술이다. IPC통신과 달리 한 방향으로만 통신이 가능하다. 파이프 자체는 fork함수에 의해 복사되지 않는다. pipe() in c 각 프로세스에는 해당하는 메모리가 독립적으로 존재하기 때문에 메모리로 통신이 불가능하다. 이것은 fork()를 이용해서 child process가 생성되더라도 데이터를 주고 받을 방법이 없다는 것이다. 이 때문에 존재하는...


  • (프로그래머스 코딩테스트 고득점 kit) BFS/DFS Level2 타겟넘버

    문제 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가...