본문 바로가기

분류 전체보기51

[OS] Process / Thread Process와 Thread 모두 프로그램의 실행과 관련된 단어들이다. 프로세스와 스레드의 차이점을 결론부터 말하자면 Process는 실행의 단위, Thread는 Process 내에서 실행되는 흐름의 단위로 Process는 독립적으로 실행되지만 Thread는 Process 내의 Thread들 끼리는 Heap, Data 등(Stack은 개별 할당)을 공유한다. 그렇다면 프로세스와 스레드 모두 프로그램의 실행과 관련된 단어라면 프로그램과 프로세스의 차이점은 무엇일까? 간단하게 설명하면 프로그램은 아직 실행되지 않은 파일 그 자체로 쉽게 말해 코드 덩어리라고 보면 될 것 같다. 반대로 프로세스는 프로그램을 실행하였을 때 해당 파일이 컴퓨터 메모리에 올라가게 되고 동적인 상태의 프로그램이다. 간단하게 요약하자면.. 2023. 12. 29.
[알고리즘/프로그래머스] 아이템 줍기 (Lv.3) [ 문제이해 ] 이 문제는 좌표평면에 여러개의 사각형이 놓여 하나의 다각형의 형태로 이루어져 있을 때, 다각형의 둘레를 따라 캐릭터가 이동하며 아이템이 놓여있는 곳까지의 최소 거리를 구하는 문제이다. 문제의 경우에서는 2개 이상의 다각형 또는 한 직사각형이 다른 직사각형을 완전히 포함하는 경우를 제외하기 때문에 어렵지 않은 문제였다. [ 문제풀이 ] 이 문제에서의 키 포인트라면 좌표 평면을 기준으로 플레이어가 둘레를 따라 움직여야 한다. 하지만 일반적인 DFS로 해결하려 한다면 위의 빨간줄을 따라 캐릭터가 이동한다면 캐릭터가 (3, 5)에 위치한다면 (4, 6)으로 이동할 뿐 아니라 (3, 6)으로도 이동할 수 있다. 이 방법은 생각보다 매우 쉽게 해결되었다. 그 방법은 바로 모든 좌표를 2배로 늘려주어.. 2023. 10. 4.
[OS] SystemStructure & Program Execution 1 CPU + Memory → Computer I/O device Input : I/O device에서 입력된 데이터가 컴퓨터로 보내지는 방향 Output → 컴퓨터에서 데이터를 처리 후 그 결과를 필요한 device로 내보내는 방향 1. CPU cpu는 pc가 가리키는 메모리주소에 있는 Instruction을 읽고 실행하는 것. 다음 Instruction을 읽기 전에 Interrupt line을 체크하여 Interrupt가 있다면 기존에 실행중인 작업 멈추고 cpu를 누가 쓰고 있었든 상관없이 cpu제어권이 운영체제에게 넘어가게 된다. 운영체제는 매 Interrupt 마다 Interrupt가 걸린 이유가 os 안의 커널 함수로 정의되어 있다. Interrupt Vector(인터럽트 번호와 주소의 쌍) / .. 2023. 10. 4.
[알고리즘/프로그래머스] 양과 늑대 (Lv.3) [ 문제이해 ] 문제의 기본 유형은 이진 트리 모양의 초원에 각 노드마다 양 또는 늑대가 한마리씩 놓여있다. 이때, 루트 노드에서 출발하여 각 노드를 돌아다니면서 노드에 있는 동물을 데리고 다니는데 양의 수가 늑대의 수보다 항상 많아야 한다. 만약 늑대의 수가 더 많다면 양은 모두 잡아먹혀 양은 0마리가 된다. 또한, 한번 방문한 노드를 다시 방문할 수 있고, 중간에 양이 잡아 먹히지 않으면서 가장 많은 수의 양을 모으는 경우에서 양의 수를 결과값으로 내면 된다. [ 문제풀이 ] 사실 문제 자체는 어렵지 않아 처음 문제를 접했을 때, 간단한 DFS문제로 해결하면 되는 줄 알았다. 하지만 보통의 DFS의 경우 한번 방문한 노드의 경우 다시 방문하지 않는다. 이 문제에서는 방문한 노드를 다시 방문해도 되지만.. 2023. 10. 4.
플로이드 와샬 개념 + 구현(최단 경로 찾기) 최단 거리를 구하는 다양한 알고리즘이 있지만 오늘은 플로이드 와샬의 개념과 구현에 대해서 한번 포스팅 해보려고 한다. 1. 플로이드 와샬 알고리즘 개념플로이드 와샬 알고리즘과 다른 최단 경로를 찾는 알고리즘의 차이점은 플로이드 와샬의 경우 모든 정점에서 모든 정점으로의 최단 경로를 한번에 구한다. 즉 정점과 정점, 모든 쌍의 최단 경로를 구하는 것이다. 방법은 먼저 가능한 모든 쌍을 표현하는 행렬(이차원 배열)을 선언하고 다이나믹 프로그래밍(dp)의 방식으로 각각의 원소들(각 쌍의 최단거리)을 업데이트 해나간다.업데이트 기준를 행하는 기준은 현재 거쳐가는 정점이다거쳐가는 정점을 기준으로 알고리즘을 수행한다.i 에서 j 로 가는데 해당 정점을 경유해서 가는 것이 더 빠르다면 그 정점을 거쳐서 가는걸로 업데.. 2023. 10. 2.
[알고리즘/프로그래머스] 길 찾기 게임 (Lv.3) 코테 스터디에서 공부한 문제로 프로그래머스의 길찾기게임 문제이다. [ 문제풀이 ] 기본적인 문제 해석은 노드의 위치가 주어질 때 이진 트리를 완성하고 각 트리의 전위 순회, 후위 순회를 진행하면 되는 문제였다. 전위 순회, 후위 순회의 경우 재귀적으로 해결하면 어렵지 않은 알고리즘이지만, 이 문제의 경우 주어진 노드들을 연결하여 트리를 완성하는 것이 관건인 문제였다.트리를 완성하는 단계는 아래에 설명으로 표시하겠다. #1. TREE 구성 기본적으로 트리를 작성하기 위해 TREE라는 구조체를 새로 정의할 수 있어야 하는 문제였다.문제에서는 주어진 노드들의 좌표와 문제에서 설명된 이진 트리의 특성을 통해 이진 트리를 완성하기만 하면 쉬운 문제다. 먼저 Tree의 경우 필요한 변수들을 생각해보았다. 1. 트리.. 2023. 10. 2.