반응형

Contents 175

[알고리즘] 코딩인터뷰 완전분석 - 1.8 0행렬

1.8 0 행렬 M x N 행렬의 한 원소가 0일 경우, 해당 원소가 속한 행과 열의 모든 원소를 0으로 설정하는 알고리즘을 작성하라. M x N 행렬에 한 원소만이 0일 경우로 해석하여 푼 경우 - 공간복잡도 O(MN) #include #include #define M 3 #define N 4 using namespace std; pair get_pos(int array[][N]) { for (int i = 0; i < M; i++) for (int j = 0; j < N; j++) if (array[i][j] == 0) return make_pair(i, j); } void set_zero(int array[][N], pair pos) { // horizontal for (int i = 0; i < ..

[알고리즘] 코딩인터뷰 완전분석 - 1.5 하나 빼기

1.5 하나 빼기 문자열을 편집하는 방법에는 세 가지 종류가 있다. 문자 삽입, 문자 삭제, 문자 교체, 문자열 두 개가 주어졌을 때, 문자열을 같게 만들기 위한 편집 횟수가 1회 이내인지 확인하는 함수를 작성하라. unordered_set 을 사용하는 경우 - O(n) #include #include #include using namespace std; bool solution(string str1, string str2) { unordered_set s; size_t len1 = str1.length(); size_t len2 = str2.length(); if (len1 > len2) { for (char &c : str1) s.insert(c); for (char &c : str2) { if (s..

[알고리즘] 코딩인터뷰 완전분석 - 1.4 회문 순열

1.4 회문 순열 주어진 문자열이 회문(palindrome)의 순열인지 아닌지 확인하는 함수를 작성하라. 회문이란 앞으로 읽으나 뒤로 읽으나 같은 단어 혹은 구절을 의미하며, 순열이란 문자열을 재배치하는 것을 뜻한다. 회문이 꼭 사전에 등장하는 단어로 제한될 필요는 없다. unordered_map자료구조를 사용하는 경우 - O(n) #include #include #include #include using namespace std; bool solution(string input) { unordered_map umap; size_t len = input.length(); int odd_count = 0; transform(input.begin(), input.end(), input.begin(), tol..

[LXC] lxc-monitor.c 분석

lxc-monitor.c regexp lxc_monitor.c 중간에 regexp라는 변수가 있다. 만일 사용자가 lxc-monitor -n c1 으로 명령어를 입력한다면 regexp : ^c1$이다. lxc-monitor -n &#39;c1|c2&#39;로 한다면 regexp : ^c1|c2$이다. my_args.lxcpath[i] 중간에 nfds의 수만큼 for문을 도는 문장이 있다. 여기서 my_args.lxcpath[i]를 가지고 lxc_tool_monitord_spawn, lxc_monitor_open과 같은 함수를 사용한다. lxc-monitor -n c1을 입력했을 때 my_args.lxcpath[i] => /usr/local/var/lib/lxc이다. lxc_tool_monitord_spa..

오픈 소스/LXC 2019.05.09

[LXC] 더블포크(double fork) - 좀비 프로세스 피하는 방법

lxc-monitor.c - double fork 사용 사람들이 하는 흔한 실수 중 하나는, 자식 프로세스의 종료를 기다리는 waitpid()를 호출하지 않고 자식 프로세스를 포크하는 것이다. wait()호출을 하지 않으면, 자식 프로세스는 종료 후 좀비 프로세스가 된다. 왜냐하면 그것(자식)의 부모 프로세스가 시스템에서 자식의 프로세스 정보를 cleanup 하지 않기 때문이다. 좀비 프로세스가 시스템의 PID를 차지하므로 시스템에서 사용가능한 PID를 줄인다. 좀비는 ps명령으로 프로세스를 확인하면 '비활성화됨(defunct)'로 표시된다. 그러나 때로는 부모 프로세스가 자식 프로세스를 오랫동안 기다리지 않는 것을 원한다. '좀비 프로세스를 만들지 않기', '자식 프로세스가 종료 될 때까지 기다리지 말..

오픈 소스/LXC 2019.05.07

[알고리즘] 코딩인터뷰 완전분석 - 1.3 URL화

1.3 URL화 문자열에 들어 있는 모든 공백을 &#39;%20&#39;으로 바꿔 주는 메서드를 작성하라. 최종적으로 모든 문자를 다 담을 수 있을 만큼 충분한 공간이 이미 확보되어 있으며 문자열의 최종 길이가 함께 주어진다고 가정해도 된다(자바로 구현한다면 배열 안에서 작업할 수 있도록 문자 배열(character array)을 이용하길 바란다). 예제 입력 : "Mr John Smith", 13 출력 : "Mr%20John%20Smith" + 연산을 사용하는 경우 - O(n) #include using namespace std; void replace_spaces(string str, int len) { string ret = ""; for (int i = 0; i < len; i++) { if (s..

[알고리즘] 코딩인터뷰 완전분석 - 1.2 순열확인

1.2 순열확인 문자열 두 개가 주어졌을 때 이 둘이 서로 순열 관계에 있는지 확인하는 메서드를 작성하라. 두 문자열을 정렬한 뒤 비교하는 경우 - O(nlogn) #include #include #define N 128 using namespace std; int check_permutation(char *str1, char *str2) { sort(str1, str1 + N); sort(str2, str2 + N); for (int i = 0; i < N; i++) { if (str1[i] != str2[i]) return -1; } return 0; } int main() { char str1[N] = "baac"; char str2[N] = "abac"; int ret; if (check_perm..

[알고리즘] 코딩인터뷰 완전분석 - 1.1 중복이 없는가

1.1 중복이 없는가 문자열이 주어졌을 때, 이 문자열에 같은 문자가 중복되어 등장하는지 확인하는 알고리즘을 작성하라. 자료구조를 추가로 사용하지 않고 풀 수 있는 알고리즘 또한 고민하라. set 자료구조를 사용하는 경우 #include #include #include using namespace std; int main() { set s; pair pr; char *str = "combana"; size_t len = strlen(str); for (int i = 0; i < len; i++) { pr = s.insert(str[i]); if (!pr.second) cout

[LXC] 수동 설치 - lxc-net 오류 해결

lxc 수동 설치 트러블 슈팅 lxcbr0 자동 생성 안 되는 경우 systemctl start lxc-net 실행 시 아래와 같은 오류 발생. 4월 16 23:07:42 jykcom systemd[1]: Starting LXC network bridge setup... 4월 16 23:07:42 jykcom lxc-net[6101]: dnsmasq: cannot open or create lease file /usr/local/var/lib/misc/dnsmasq.lxcbr0.leases: No such file or directory 4월 16 23:07:42 jykcom lxc-net[6101]: Failed to setup lxc-net. 4월 16 23:07:42 jykcom systemd[1]..

오픈 소스/LXC 2019.04.16
반응형