본문 바로가기

728x90

분류 전체보기

(22)
[BOJ] 14502. 연구소 - java ⬛ [BOJ] 14502. 연구소 - java https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net ⬛ 문제 정리 0은 빈칸, 1은 벽, 2는 바이러스 바이러스(2)는 벽을 통과할 수 없고 빈칸(0)으로만 확산된다. 꼭 3개의 벽을 세워야 하고 벽을 세운 뒤, 바이러스가 퍼질 수 없는 곳을 안전 영역이라고 한다. 안전 영역 크기의 최댓값을 구하여라. ⬛ 풀이 방법 map을 채울 때 빈칸(0)의 개수를 센다. -> zeroCnt dfs를 이용하여 3개의 벽을 세우..
[BOJ] 2458. 키 순서 - java (SWEA_5643) ⬛ [BOJ] 2458. 키 순서 - java https://www.acmicpc.net/problem/2458 2458번: 키 순서 1번부터 N번까지 번호가 붙여져 있는 학생들에 대하여 두 학생끼리 키를 비교한 결과의 일부가 주어져 있다. 단, N명의 학생들의 키는 모두 다르다고 가정한다. 예를 들어, 6명의 학생들에 대하여 www.acmicpc.net ⬛ 풀이 방법 인접 행렬을 만들고 방향있는 간선 사용 나보다 작은 학생들에 대한 정보와 나보다 큰 학생들에 대한 정보의 합이 N-1개면 나의 키가 몇번째인지 알 수 있다. BFS를 이용하여 주어진 정보에서 더 알아낼 수 있는 정보를 추가 학생별로 count 배열을 만들어 나보다 작은 학생들에 대한 정보나 큰 학생들에 대한 정보를 알 때마다 +1 ⬛ 소스..
[자료 구조] Deque(Double-Ended Queue) - 자바 Front와 Rear 양쪽에서 삽입(enQueue)과 삭제(deQueue)가 가능한 자료 구조 Deque의 앞쪽으로 삽입하고, 뒤쪽으로 삭제하면 Queue처럼 사용할 수 있다. Deque의 앞쪽에 삽입하고 다시 앞쪽으로만 삭제하면 Stack처럼 사용할 수 있다. ⬛ 연산 addFirst(x) : 데이터 x를 덱의 Front에 추가, 용량을 초과하면 exception 발생 push(x)와 동일 → 덱을 스택으로 사용하고자 할 때 사용됨 offerFirst(x) : 데이터 x를 덱의 Front에 추가, 용량을 초과하면 false를 리턴 removeFirst() : 덱의 Front에 있는 데이터 삭제, 비어있으면 Exception 발생 pop()과 동일 → 덱을 스택으로 사용하고자 할 때 사용됨 remove(..
[운영 체제] 페이징과 세그멘테이션 기법 ⬛ 단편화 메모리의 공간이 여러 조각으로 나뉘는 현상으로 합쳐보면 메모리 사용이 가능하지만 나누어져 있어 사용이 불가능한 상태 ◼ 내부 단편화 (Internal Fragmentation) 메모리를 분할하여 사용할 때 분할된 단위가 프로세스가 필요한 공간보다 더 커서 사용되지 못하고 남는 메모리가 발생하는 현상 ◼ 외부 단편화 (External Fragmentation) 메모리 할당 및 해제 작업의 반복으로 메모리와 사이에 사용하지 않는 메모리가 발생하고 이러한 메모리들을 합치면 프로세스 할당하기에 충분하지만 연속적인 공간이 아니기 때문에 사용하지 못하는 현상 ⬛ 연속 메모리 할당 방식 고정 분할 기법 : 메모리를 여러 개의 고정된 크기로 분할하고 하나의 메모리에 하나의 프로세스를 실행 → 내부 단편화 동..
[Boj] 17070. 파이프 옮기기1 - java ⬛ 17070. 파이프 옮기기1 https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net ⬛ 풀이 방법 현재 파이프의 상태가 가로일 때 세로로 가려는 시도는 제외, 현재 파이프의 상태가 세로일 때 가로로 가려는 시도는 제외 대각선으로 가려고 할 때는 현재 파이프의 위치에서 오른쪽, 아래쪽으로 갈 수 있는지 먼저 파악 -> isPossible 변수가 true라는 뜻은 대각선으로 갈 수 있는 가능성이 있다는 뜻이다. isPossib..
[운영 체제] Deadlock Process1은 Resource1을 사용 중 Process2는 Resource2를 사용 중 Process1은 Resource2를 요청하고 Process2는 Resource1을 요청 서로 원하는 자원이 상대방에게 할당되어 있기 때문에 무한정 wait 상태에 들어감 → Deadlock 상태 데드락이란 교착상태라고도 불리며 상호 배제에 의해 나타나는 문제점이다. 2개 이상의 프로세스가 발생 가능성이 없는 이벤트를 기다리는 경우 ⬛ Starvation vs deadlock Starvation은 Ready 상태에서 발생하고 운이 없어 오래 기다릴 뿐 언젠가는 자원을 할당받을 확률이 있는 상태 deadlock은 Asleep 상태에서 발생하고 오래 기다려도 절때 발생할 확률이 없는 상태 ⬛ Deadlock 발생 필..
[운영 체제] 프로세스와 관련된 System Call ⬛ 사전 지식 ◼ 커널 모드(Kernel Mode)와 사용자 모드(User Mode) 커널 모드 : 모든 자원(드라이버, 메모리, CPU)에 접근, 명령할 수 있다. 사용자 모드 : 프로그램의 자원에 함부로 접근하지 못하고 코드 작성, 프로세스 실행 등의 간단한 행동만 가능 ◼ System call ​ OS의 특정 기능을 쓸 수 있게 하는 인터페이스를 요청하는 함수 사용자 모드에서 System call함수를 이용하여 커널에 접근하고 커널 모드에서의 기능을 사용한다. ◼ PID 프로세스 식별 번호 ⬛ 프로세스 생성과 관련된 System call ◼ 프로세스의 생성 과정 부모 프로세스가 자식 프로세스를 복제 생성하여 트리 구조를 이룬다. 부모 프로세스의 주소공간 내용을 그대로 자식 프로세스의 주소 공간으로 ..
[운영 체제] 운영체제 개요 ⬛ 운영체제의 분류 ◼ 동시 사용자 수에 따라 단일 사용자(Single-user system) 다중 사용자(Multi-user system) ◼ 동시 실행 프로세스 수에 따라 단일 작업(Single-tasking system) : 시스템 내에 하나의 작업만 존재할 수 있기 때문에 하나의 프로그램 실행을 마친 뒤에 다른 프로그램을 실행할 수 있다. 다중 작업(Multi-tasking system) : 동시에 여러 작업을 수행할 수 있다. ◼ 작업 수행 방식에 따라 일괄처리 시스템(Batch processing system) 사용자의 요청 작업을 일정 시간 모아 두었다가 한번에 처리 시분할 시스템(Time-sharing system) CPU의 전체 사용시간을 나눠 여러 사용자들의 프로그램을 나눈 시간만큼 번..

728x90