파이프 파이프는 두 프로세스가 통신할 수 있게 하는 전달자로서 동작 초기 UNIX 시스템에서 제공하는 IPC 기법의 하나 파이프는 프로세스 간에 통신하는 간단한 방법이지만, 통신할 때 여러 제약이 발생 파이프 구현을 위해 고려해야 할 점 파이프가 단방향 또는 양방향 통신을 허용하는가? 양방향 통신이 허용된다면 → 반이중 방식인가, 전이중 방식인가? 반이중 방식 : 한 순간에 한 방향 전송만 가능 전이중 방식 : 동시에 양방향 데이터 전송 가능 통신하는 두 프로세스 간에 부모-자식과 같은 특정 관계가 존재해야 하는가? 파이프는 네트워크를 통해 통신이 가능한가, 아니면 동일 기계 안에 있는 두 프로세스끼리만 가능? 일반 파이프 일반 파이프는 생산자-소비자 형태로, 두 프로세스 간의 통신을 허용 생산자는 쓰기..
문제 이해 단계 https://www.acmicpc.net/problem/7682 7682번: 틱택토 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 줄은 9개의 문자를 포함하며, 'X', 'O', '.' 중 하나이다. '.'은 빈칸을 의미하며, 9개의 문자는 게임판에서 제일 윗 줄 왼쪽부터의 순서이다. 입 www.acmicpc.net 3x3 게임판에 O와 X 두 가지를 가지고 게임을 한다. 무조건 X를 먼저 두는 것을 시작으로 X와 O를 번갈아가면서 둔다. 게임에서 이기는 조건은 X나 O가 가로, 세로, 대각선 방향으로 3칸을 잇는 데 성공하는 것이다. 이를 틱택토라고 부르겠다. 틱택토를 성공하는 순간 게임은 즉시 끝난다. 게임판이 가득 차도 게임은 끝난다. 입력으로는 게임판의 최종상태가 주어지는..
문제 이해 단계 https://www.acmicpc.net/problem/3151 3151번: 합이 0 Elly는 예상치 못하게 프로그래밍 대회를 준비하는 학생들을 가르칠 위기에 처했다. 대회는 정확히 3명으로 구성된 팀만 참가가 가능하다. 그러나 그녀가 가르칠 학생들에게는 큰 문제가 있었다. www.acmicpc.net N개의 입력이 일렬로 들어온다. 입력은 정수로 들어오는데, 숫자가 -10,000 ~ 10,000 사이로 들어온다. 숫자 3개를 골라서 합이 0이 되는 경우가 몇 가지가 나오는지 찾는 문제. 숫자가 같아도 위치가 다르면 다른 경우의 수로 취급한다. 문제 접근 단계 제한사항부터 살펴보면 N개의 입력은 최대 10,000개까지 들어올 수 있다. 숫자가 3개를 골라야 하기 때문에 10000 C3..
* 이 글은 어필리에이트 링크를 포함하고 있습니다. 링크를 클릭하셔서 추천하는 에셋을 구매하시면 어필리에이트에게 수익이 발생합니다. 링크를 클릭만 하는 것으로는 수익이 발생하지 않지만, 프로젝트의 개발과 우수한 에셋의 추천에 큰 도움이 됩니다. 안녕하세요! 여태까지 CS/ 알고리즘 관련 글만 써오다가 이렇게 정보 관련 글로 찾아뵙는 건 처음이네요. 다름이 아니라, 이번에 유니티에서 한국 시간 2023년4월 6일 오전 12시부터 4월 27일 오전 12시까지 메가번들을 할인 판매한다고 해서 알려드리러 왔습니다! 이번에 판매하는 메가 번들의 테마는 시간 여행(Time Travel) 입니다! 사실 테마는 우리에게 중요한 게 아니죠! 이게 어떤 패키지로 구성되어 있고, 얼마나 세일하는지가 중요하겠죠? 완성도 높은..
문제 이해 단계 https://www.acmicpc.net/problem/16987 16987번: 계란으로 계란치기 원래 프로그래머의 기본 소양은 팔굽혀펴기를 단 한 개도 할 수 없는 것이라고 하지만 인범이는 3대 500을 넘기는 몇 안되는 프로그래머 중 한 명이다. 인범이는 BOJ에서 틀린 제출을 할 때마다 턱 www.acmicpc.net N개의 계란이 존재하고, 각 계란에는 (내구도, 무게) 정보가 쌍으로 주어진다.그리고 두 계란이 부딪힐 때 서로의 무게만큼 내구도가 깎여나간다. 내구도가 0 이하가 되면 계란이 깨지는 것으로 간주한다. 그리고 계란을 깨는 과정은 아래와 같이 한다. 1. 가장 왼쪽의 계란을 든다. 2. 손에 들고 있는 계란으로 깨지지 않은 다른 계란 중에서 하나를 친다. 단, 손에 든..
프로세스 간 통신 운영체제 내에서 실행되는 병행 프로세스들은 독립적이거나 협력적인 프로세스 일 수 있다. 독립적 : 실행 중인 다른 프로세스들과 데이터를 공유하지 않는 프로세스 협력적 : 실행 중인 다른 프로세스들과 영향을 주고받는 프로세스 프로세스 협력을 허용하는 환경을 제공하는 이유 정보 공유 여러 응용 프로그램이 동일한 정보(복사, 붙여 넣기 등)를 원할수도 있음 → 그러한 정보를 병행적으로 접근할 수 있는 환경을 제공해야 함 계산 가속화 특정 태스크를 빨리 실행하고자 함 → 태스크를 서브태스크로 나누어 이를 다른 서브태스크들과 병렬로 실행하면 됨 가속화는 복수 개의 처리 코어를 가진 경우에만 가능 모듈성 시스템 기능을 별도의 프로세스 또는 스레드로 나누어, 모듈식 형태로 시스템을 구성할 수도 있음..
문제 이해 단계 https://www.acmicpc.net/problem/21939 21939번: 문제 추천 시스템 Version 1 tony9402는 최근 깃헙에 코딩테스트 대비 문제를 직접 뽑아서 "문제 번호, 난이도"로 정리해놨다. 깃헙을 이용하여 공부하시는 분들을 위해 새로운 기능을 추가해보려고 한다. 만들려고 하는 명령 www.acmicpc.net 문제가 N개 주어지는데, (문제의 번호, 난이도)의 쌍으로 이루어진다. 해당 조건일 때 recommend x로 나오는 출력을 그대로 구현해라는 문제 문제 접근 단계 문제 제한 사항부터 살펴보자. 문제의 개수 N은 최대 100,000개까지, 명령어 M의 개수는 10,000개이다. 최대 100,000개까지의 모든 탐색을 다한다고 해도 10^5 * 10^4..
문제 이해 단계 https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net NxN짜리 격자판이 존재한다. 그리고 중간에 벽(1)이 존재한다. 그리고 2칸을 차지하는 파이프가 존재하는데, 무조건 (1,1)과 (1,2)에서 시작한다. 목표는 파이프가 벽에 부딪히지 않고, (N, N)까지 이동하는 것이다. 파이프는 회전이 가능한데, 움직이면서 회전이 가능하다. 회전은 한 번에 45도씩만 가능하다. 움직이는 방향은 →↓↘으로만 움직일 수..