본문 바로가기

분류 전체보기

(68)
[운영체제] Memory Management (1) 기본적으로 메모리 관리는 CPU가 프로그램을 수행할 수 있도록 만들어 주는 것 명령어 가져올 때 메모리에서 주소 가져옴 -> 효율적 관리 필요 메인 메모리는 느려, 캐시 사용 Binding 변수의 주소를 실제로 매핑시키는 것, 메모리 상 물리 주소를 변수의 주소를 매핑시키는 것 binding 시점에 따라 3가지로 나뉨 Compile time binding: 컴파일 할 때 매핑 -> 컴파일되면 프로그램 코드 안에 변수 주소가 하드코딩됨 프로그램이 무조건 커널 다음 번지에 올라간다고 해놓음 다른 컴퓨터에서 실행된다면 커널의 크기가 달라져 -> 프로그램 시작점이 달라져 -> 다시 컴파일해야함; flexibility 매우 떨어져 Load time binding: 프로그램 시작 프로세스 위치 0번지라고 가정, 상..
[그래프] 백준 1389 c++ 케빈 베이컨의 6단계 법칙 오 어려움 예전에 풀려고 했다가 못 풀었던 거 같음 브루트포스가 아닐까 하는 생각 ... for(int i=1; i> M; int min_dist[101][101] = {0, }; vector con; vector v; con.push_back(v); // 친구 배열 채워주기 for(int i=0; i> r >> c; arr[r][c] = 1; arr[c][r] = 1; } for(int i=1; i
[그래프] 백준 1260 c++ / Nested Functions, 정적배열과 동적배열, memset .. 몇 가지 궁금점 그래프 탐색 결과를 출력해야 하는데 문득 main 함수 내에 dfs, bfs 함수를 정의할 수 있을지 궁금해졌음 -> 바보같은 생각 걍 main 밖에 함수 정의하고 cout 하면 됨 그래도 중첨 함수 선언에 대해 알아보자 Nested Functions, 중첩 함수 Nested functions이란 다른 함수의 내부에 정의된 함수이다. nested function 예시) foo (double a, double b) { double square (double z) { return z * z; } return square (a) + square (b); } GNU C 확장에선 지원되지만 GNU C++에서는 지원되지 않는다고. 참고: https://gcc.gnu.org/onlinedocs/gcc..
[브루트포스] 백준 1107 C++ / 또 무수한 틀림과 하 또 막혔다 또 #include #include #include using namespace std; int N, M; int *broken; int calMin(int num) { // 1. 100에서 +, -해서 움직이는 횟수 int fromHundred = abs(100-num); //2. 앞자릿수부터 고장난 숫자 있는지 검사 string cp = to_string(num); for(int i=0; i N >> M; broken = new int[M]; for(int i=0; i> broken[i]; // N이 100이면 0 출력 if(N == 100) { cout
[분할정복] 백준 1074 c++ Divide and conquer algorithm, 분할 정복 알고리즘 : 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 방법 보통 재귀함수를 통해 구현 function F(x): if F(x)의 문제가 간단 then: return F(x)을 직접 계산한 값 else: x를 y1, y2로 분할 F(y1)과 F(y2)를 호출 return F(y1), F(y2)로부터 F(x)를 구한 값 어렵다.. 처음에는 2차원 배열의 모든 칸을 돌면서 숫자를 써넣은 다음 r, c에 맞는 칸의 값을 출력하는 방법을 생각했는데 어떻게 코드를 작성해야 할 지 감이 잘 안 옴 제출 코드 #include #include using namespace std; int **arr; int r, c; int n =..
[운영체제] Deadlocks 프로그램 코드에 필요한 모든 제반 조건들 - 리소스 리소스가 확보되어야 프로세스가 일을 할 수 있음 데드락 발생 조건 Mutual exclusion: 상호 배제 조건, 어떤 프로세스가 자원을 쓰고 있으면 다른 프로세스는 그 자원을 쓸 수 없다는 것 No preemption: 어떤 프로세스가 자원을 잡고 있으면 자발적으로 놓기 전까진 다른 프로세스가 사용할 수 없음, 강제로 뺏지 않음 Hold and wait: 모든 프로세스는 확보한 자원은 손에 꼭 쥐고 있고 나머지 자원을 확보하기 위해 기다린다는 것 Circular wait: P1이 P2의 자원을 기다리고, Pn-1이 Pn의 자원을 기다리고, Pn이 P0의 자원을 기다리는 것처럼 원형 대기 방식이 된다는 것 Resoure-Allocation Graph,..
[그래프] 그래프 탐색, DFS, BFS 앞의 글에서 푼 백준 1012번이 그래프, DFS였음 뭔지도 모르고 풀었나 심각함 하지만 이젠 알아야 함 마침 2-2 알고리즘 강의 ppt가 있음 그래프 표현 정점 개수 E 간선 개수 V 공간 복잡도 인접 리스트 (Adjacency-list) directed graph, undirected graph 모두 공간 복잡도 Θ(E+V) 인접 행렬 (Adjacency-matrix) directed graph, undirected graph 모두 공간 복잡도 Θ(V^2) 그래프가 sparse하다면, 간선의 개수가 적다면 인접 리스트가 더 나음 그래프가 dense하다면, 간선의 개수가 많다면 인접 행렬이 더 나음 모든 정점을 방문하는 데 시간 복잡도 인접 리스트: Θ(E+V) -> 더 효율적 인접 행렬: Θ(V^2..
[백준] 1012 유기농 배추 c++/무수한 틀림과 함께 - 언제 풀었는지, 어떻게 풀었는지 기억도 안 나는 문제들 다시 푸는 중  런타임 에러 - 제출 코드#include using namespace std;int M,N;int **arr;int res = 0;void check(int r, int c){ arr[r][c] = 0; if(arr[r][c+1] == 1 && c+1 > T; for (int i=0; i> M >> N >> K; res = 0; arr = new int*[M]; for(int j=0; j> r >> c; arr[r][c] = 1; } for(int k=0; k처음 아이디어: 배열 인덱스가 어차피 0,0 부터 오른쪽, 아래로 전부 도니..