전체 글 127

[백준] 13334 철로

문제 주소 : www.acmicpc.net/problem/13334 13334번: 철로 입력은 표준입력을 사용한다. 첫 번째 줄에 사람 수를 나타내는 양의 정수 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 n개의 각 줄에 정수 쌍 (hi, oi)가 주어진다. 여기서 hi와 oi는 −100,000,000이상, 100,000,0 www.acmicpc.net 문제 확인 스위핑과 우선순위 큐를 활용하는 문제입니다. 풀이 입력받은 선들을 x기준으로 내림차순 정렬을 한 후 우선순위 큐에 y 값을 내림차순으로 넣어 비교합니다. 비교식은 ary[i].x + dist que.pop() 이며 이러한 동작으로 인해 현재 이 조건을 만족하게 된다면 다음 단계에서 의미 없는 값이 되기 때문에..

[백준] 9376 탈옥

문제 주소 : www.acmicpc.net/problem/9376 9376번: 탈옥 상근이는 감옥에서 죄수 두 명을 탈옥시켜야 한다. 이 감옥은 1층짜리 건물이고, 상근이는 방금 평면도를 얻었다. 평면도에는 모든 벽과 문이 나타나있고, 탈옥시켜야 하는 죄수의 위치도 나타 www.acmicpc.net 문제 확인 그래프 탐색 문제입니다. BFS, 다익스트라 알고리즘으로 해결할 수 있습니다. 맵에서 도달할 수 있는 각 점을 하나의 버텍스로 잡으며 탐색한 후 기록된 값을 이용해 풀 수 있는 문제입니다. 풀이 죄수 2명과 상근이가 모두 움직이면서 한 점에서 만나는 경우 탈옥을 할 수 있다는 것을 이용합니다. 이 경우 한 점에서 만나는 특성상 정점에서의 각각 문을 연 최솟값이 다른 최솟값에게 영향을 미치지 않습니다..

[백준] 14891 톱니바퀴

문제 주소 : www.acmicpc.net/problem/14891 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 www.acmicpc.net 문제 확인 간단한 시뮬레이션 문제입니다. 주어진 상황을 그대로 구현하면 됩니다. 풀이 톱니바퀴의 왼쪽과 오른쪽을 가리키는 인덱스를 저장시켜두고 방향 전환을 하면서 맞춰 기록해갑니다. 톱니바퀴가 회전할 때 서로 맞닿은 극에 따라 옆에있는 톱니바퀴의 회전이 결정됩니다. 회전 시 맞닿은 톱니의 극이 다르다면 옆의 톱니바퀴는 반대방향으로 회전하게 됩니다. 코드 1 2 3 4 5 6 7 8 9 10 ..

[운영체제] 프로세스

프로세스란? 프로세스는 실행 중에 있는 프로그램을 의미합니다. 프로그램은 디스크나 다른 저장소에 저장되어 있는 코드로 된 실행 가능판 것을 의미하고 프로세스는 프로그램을 실행시켜 메모리에 올려진 상태를 말합니다. 같은 프로그램을 여러 번 실행시키면 프로그램은 하나지만 프로세스는 여러 개가 생깁니다. 프로그램이 동작하러면 운영체제가 프로세스들을 관리하기 위하여 각 프로세스마다 정보를 매깁니다. 이 정보에는 PC, 레지스터, 메모리, 프로세스 IP, 부모 프로세스, 프로세스의 현재 상태 등이 있습니다. 프로세스의 메모리 형태 프로세스는 자기만의 고유 메모리를 가지고 있습니다. 이 고유 메모리는 논리적으로 형성되어 있으며 각 영역에 해당되는 정보들이 실제 물리적 메모리 공간에 할당이 됩니다. Stack 영역(..

[백준] 1444 숌 언어

문제 주소 : www.acmicpc.net/problem/1444 1444번: 숌 언어 첫째 줄에 문장이 주어진다. 문장의 길이는 최대 3,000이다. 문장은 알파벳으로만 이루어져있고, 항상 대문자와 소문자가 번갈아가면서 나온다. www.acmicpc.net 문제 확인 최소 버텍스 커버 문제입니다. 처음과 끝 단어는 꼭 포함시켜야 하며 현재 위치 기준으로 양 옆의 문자를 버텍스로 두어 이분매칭 그래프를 작성하면 됩니다. 풀이 2개의 문자를 버텍스로 두고 Aa, aA를 구분하기 위해 배열의 크기를 26 * 26 * 2로 둡니다. 아스키 수를 비교하는 것 보다 isupper 함수를 이용하는 것이 더 빠르므로 이 함수를 사용합니다. 이미 포함된 처음, 끝 단어를 빼고 그래프를 작성한 후 최소 버텍스 커버 알고..

[운영체제] OS 디자인과 구현

운영체제는 사용될 환경, 자원 등에 의해 다르게 디자인됩니다. 일반 사용자들이 많이 사용하는 윈도우, 개발자들이 많은 기능을 사용하기 위하여 리눅스 등 사용자에 따라 바뀌기도 합니다. 디자인의 목적 : 보통 관점에 따라 2가지로 분류합니다. 사용자 입장 : 사용하기 편함, 배우기 쉬움, 빠른 속도, 신뢰성 등 시스템 입장 : 적용하기 쉬움, 호환성, 유지보수, 유연성, 장애 복구 능력 등 목적은 운영체제를 설계하기 나름이므로 환경, 자원 등에 맞춰 적절하게 맞추도록 합니다. 디자인 시 사용하는 2가지 용어가 있습니다. Mechanisms : 수행하는 방법 Policy : 수행에 의해 나오는 결과 이렇게 2가지로 나누는 이유는 매커니즘을 통해 결과를 만들어 내는 구조는 잘 변하지 않지만 만들어 내는 결과물..

[백준] 15562 네트워크

문제 주소 : www.acmicpc.net/problem/15562 15562번: 네트워크 우리의 회사에는 N개의 네트워크 시스템 S1, S2, ..., SN와 이들을 연결하는 M개의 네트워크들 W1, W2, ..., WM이 있다. 네트워크 시스템들은 우선순위가 있어 모든 네트워크는 우선순위가 www.acmicpc.net 문제 확인 특별한 알고리즘이 필요없는 문제입니다. 문제에서 주어진 특성을 잘 이해하면 풀 수 있는 문제입니다. 풀이 A -> B, B -> C 라는 2개의 네트워크가 있을 때 이를 A -> C로 줄일 수 있습니다. 다시 말해 어떤 점에서 들어오는 선과 나가는 선이 있다면 이 둘을 합쳐 하나의 선으로 만들 수 있다는 것입니다. 이러한 성질을 이용해 들어오는 선이 1개 이상이며 나가는 선이..

[운영체제] 시스템 콜과 인터럽트

시스템 콜 정의를 보면 운영체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스라고 합니다. 간단하게 말하자면 운영체제 서비스를 접근하기 위한 유일한 수단입니다. 프로그램을 실행하거나 프로그램이 컴퓨터 자원을 사용하기 위해서는 시스템 콜을 통해 커널에 자원 사용을 요청을 해야 합니다. 시스템 콜의 주요 세 가지 기능은 다음과 같습니다. 사용자 모드에 있는 응용 프로그램이 커널의 기능을 사용할 수 있도록 한다. = 운영체제 서비스에 접근을 할 수 있게 해 줍니다. 시스템 호출을 하면 사용자 모드에서 커널 모드로 바뀐다. 커널에서 시스템 호출의 작업이 끝나면 사용자 모드로 돌아간다. 여기서 말하는 사용자 모드와 커널 모드의 의미를 조면 사용자 모드는 사용자가 프..

[백준] 18233 러버덕을 사랑하는 모임

문제 주소 : www.acmicpc.net/problem/18233 18233번: 러버덕을 사랑하는 모임 첫 번째 줄에 정수 N, P, E가 공백으로 구분되어 주어진다. (1 ≤ N, P ≤ 20, 1 ≤ E ≤ 1,000,000) 그 다음 줄부터 N개의 줄에 걸쳐 회원 1부터 순서대로 xi와 yi가 공백으로 구분되어 주어진다. (1 ≤ xi www.acmicpc.net 문제 확인 간단한 dfs 문제입니다. 통과는 간단하지만 시간과 메모리 단축을 하기 위해서는 조금 생각해야 할 것이 있습니다. dfs 탐색 횟수 줄이기 dfs 함수의 인자 수 줄이기 조건에 부합하는지 확인하는 함수를 dfs와 분리하여 dfs 함수 크기 줄이기 조건 확인 시 루프 문 최소화 풀이 stack을 이용하여 p개만큼 사람을 선택 해..

[운영체제] Intro

운영체제란? 운영체제의 정의를 보면 시스템 하드웨어를 관리, 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼, 공통 시스템 서비스를 제공하는 시스템 소프트웨어입니다. 간단하게 풀어 설명하자면 하드디스크, CPU, GPU 등 하드웨어를 관리하고 사용자가 이를 활용할 수 있게 해 주며, 사용자가 작성한 프로그램이 하드웨어를 사용하고, 시스템 서비스 등을 활용할 수 있게 만들어주는 하나의 큰 소프트웨어입니다. 주요 목적은 다음과 같습니다. 사용자가 프로그램을 쉽게 작성, 실행할 수 있도록 도움을 줍니다. 컴퓨터 시스템을 효율적으로 관리, 사용할 수 있도록 합니다. 하드웨어, 장치 등을 효율적으로 관리, 사용할 수 있도록 합니다. 사용자, 응용 소프트웨어가 시스템 서비스를 활용할 수 있게 해 주며, 하..