목록전체 글 (255)
-
지금까지 다루어 봤던 솔루션들은 사실 꽤나 low-level에 속한 솔루션들입니다. 그로 인해 구현하기 어렵다는 단점이 존재하고 에러가 발생할 확률도 올라간다는 단점이 있었습니다. 물론 OS가 support해주면서 성능은 향상시킬 수 있었지만 그에 따른 눈에 안보이는 단점도 존재할 수 있습니다. 따라서 이번 시간에 배워볼 것은 조금 더 가벼운 수준에서 이 상호배제를 풀어나가보려고 합니다. 이번 시간에 배울 솔루션은 명암으로도 구분이 되는 Monitor라는 솔루션입니다. 지금까지 했던 것보다 사용이 쉽다는 특징을 가지고 있는데 어떤 것인지 살펴보겠습니다. 모니터라는 것은 Critical data와 CS영역을 모아놓은 하나의 방이라고 생각하시면 되겠습니다. 예를 들어 책 방인데, 한 방에 한 명만 들어갈 수..
세마포어가 Busy Waiting을 해결하는 좋은 솔루션이 된 것을 지난 포스팅에서 확인했습니다. 하지만 Waiting하고 있는 프로세스를 깨울 때 누구를 깨울지 정해진 것이 없었기 때문에 그것을 정형화하는 룰이 등장하기 시작합니다. 이번에 사용될 아이디어는 은행의 번호표와 비슷한 개념으로서, 대기번호에 따라 프로세스의 순서를 매길 수 있습니다. 그것이 바로 Eventcount / Sequencer입니다. 은행을 가면 번호표를 뽑고 자신의 순서를 기다리며 자신의 번호가 호명될 때 업무를 할 수 있습니다. 여기에선 번호 뽑는 기계를 Sequencer라고 부릅니다. 이 기계는 1씩 증가하며 번호를 매기게 되며 최초 생성시 0으로 초기화를 하고 절대 감소하지 않습니다. 그리고 이 Sequencer는 ticke..
# 주소 https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net # 문제 # 문제 해설 및 코드 리뷰 import java.util.*; public class Main { static int n; static int arr[]; static int count = 0; public static void main(String[] args){ Scanner scan = new Scanner(System.in); n = scan.nextInt(); arr = new int..
# 주소 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net # 문제 # 문제 해설 및 코드 리뷰 import java.awt.*; import java.util.*; public class Main { static int n,m; static int[] arr; static int[] s; static int max = Integer.MIN_VALUE; static int min = Inte..