1. 교착상태 발생조건에 대해 설명하시오. 👉🏻 교착상태 발생 조건으로는 4가지가 있습니다. 1. 상호배제(Mutual exclusion) : 프로세스들이 필요로 하는 자원에 대해 배타적인 통제권을 요구한다. ----> 공유하지 않고 오로지 나만 쓰는 상황이라고 할 수 있습니다. 2. 점유대기(Hold and wait) : 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다. ----> 내가 어떤 공유된 자원을 가진 상태에서 또 다른 것을 요구할 때 발생합니다. 3. 비선점(No preemption) : 프로세스가 어떤 자원의 사용을 끝낼 때까지 그 자원을 빼앗을 수 없다. ----> 내가 가진 공유 자원을 양보하지 않아서 더이상 진행되지 않을 때 발생합니다. 4. 순환대기(Circular wa..
1. Thred란 무엇인지 설명하시오. 👉🏻 스레드(Thread)란 프로세스(Process) 내에서 실제로 작업을 수행하는 주체를 의미합니다. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행합니다. 또한 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(Multi-threaded process)라고 합니다. (+) 멀티 스레드란 👉🏻 하나의 응용프로그램을 여러 개의 스레드로 구성하고, 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것입니다. 웹 서버는 대표적인 멀티 스레드 응용 프로그램입니다. 장점 1. 시스템 자원 소모 감소(자원의 효율성 증대) 2. 시스템 처리량 증가(처리 비용 감소) - 스레드 사이의 작업량이 작아 Context Switching**이 빠름 3. 간단한..
💡 나의 풀이 Hash를 사용하지 않았을 때 나의 풀이 (Hash를 사용한 코드보다 시간복잡도 큼) 처음에 HashMap을 썼다가 사용이 미숙하여 패스..List 썼다가 이중 for문 썼다가 난리ㅠ 저번 스터디 때 친구가 Arrays.sort로 정렬한 뒤 완주한 선수 지워나가는 것에서 힌트를 얻어서 풀었다. participant와 completion이 정렬되어 있기 때문에 계속 비교해서 값이 같지 않은 것이 나왔을 때 participant[i]를 return하면 완주하지 못한 선수가 나온다. import java.util.*; class Solution { public String solution(String[] participant, String[] completion) { String answer =..
💡 나의 풀이 10진수를 2진수로 변환하는 함수인 Integer.toBinaryString(num)과 replace 함수를 사용하여 풀이 비트연산자 "|"를 사용하여 먼저 수행 후 "#" 또는 " "으로 대체하여 출력 | -> 둘 중 하나라도 1이면 1, 아니면 0 (OR) & -> 둘 중 모두 1이면 1, 아니면 0 (AND) ^ -> 두 비트가 다를 때 1 출력 (XOR) ~ -> 비트 전환 연산자 / 1이면 0, 0이면 1로 전환 import java.util.*; class Solution { public String[] solution(int n, int[] arr1, int[] arr2) { String[] answer = new String[n]; for(int i = 0; i < n; i+..
💡 나의 풀이 class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { int[][] answer = new int[arr1.length][arr1[0].length]; for(int i = 0; i < arr1.length; i++){ for(int j = 0; j < arr1[i].length; j++){ answer[i][j] = arr1[i][j]+arr2[i][j]; } } return answer; } }