본문 바로가기

분류 전체보기311

리눅스 명령어 정리 (Linux commands) Linux 리눅스 유저가 시스템을 사용할 수 있는 자유도가 크다. 하지만 커널 패닉현상이 많았다. 커널 안정화를 잘한 버전 중 하나가 ubuntu ubuntu는 아프리카어로 '다양한' 이라는 뜻이다. 그럼이제 리눅스 명령어를 알아보자. Commands 명령어 내용 예제 sudo substitute user do 다른 유저(관리자 말고 나)에게 권한을 부여한다. 다른 사용자의 보안관련 권한 허용 sudo (다른 명령어) man manual man cp cp(복사명령어)에 대한 상세 보여줌 touch Update the access and modification times of each FILE to the current time. touch hello.txt clear 터미널 모든 내용 삭제 clear 깨.. 2019. 6. 28.
[백트래킹] 1987 알파벳 1. 알파벳 보드 b 생성 2. 알파벳 모음 alphabets 생성 - 이미 찾은 알파벳 확인용 3. 방향 설정 상 하 좌 우 dx = {-1, 1, 0, 0} dy = {0, 0, -1, 1} 이 보드의 (0, 0) 부터 시작해서, 상하좌우 매번 탐색하면서 - 보드의 바깥으로 가는 경우는 다시 돌아옴(백트랙). - 새로운 알파벳을 탐색했으면 기록하고, 다음 경로 탐색. - 이미 기록된 알파벳을 탐색했으면 백트랙. ex) 2 4 CAAB ADCB 이와 같은 알파벳 보드에서, 재귀함수가 어떻게 진행되는지 보자. C : 알파벳 체크. 1 상 : 없음, 돌아옴 2 하 : A 체크 2-1 상 : C가 이미 체크 되어있음, 돌아옴 2-2 하 : 없음, 돌아옴 2-3 좌 : 없음, 돌아옴 2-4 우 : D 체크 2.. 2019. 6. 27.
vector - 효율성과 편의성이 높은 array 벡터의 구현 vector는 array인데, size, clear, push_back 등을 지원해주는 효율적이며 편의성이 높은 container이다. 1.vector는 array의 기본성질을 유지한다. (maintain the primitive array) a pointer variable to the block of allocated memory, capacity, 현재 저장된 item 수 2. deep-copy 제공, operator= 제공 destructor 제공 3. resize 제공, capacity를 바꿔주는 routine을 가진다. (reserve routine~) 4. operator[] 5. size, empty, clear back, pop_back, push_back 6. nested .. 2019. 6. 24.
vscode terminal 단축키 vscode tip을 적어본다. 작은 노트북으로 코딩을 하다보면, 화면을 넓게 보고 싶을 때가 많다. 그럴 때는 필요없는 옆의 조그만한 창들을 잠시 숨겨놓으면 좋은데, ctrl + b : 옆에 explorer 창 가리기 (한번 더 누르면 탐색창이 다시 나온다.) ctrl + j : 터미널 창 가리기 (한번 더 누르면 터미널창이 다시 나온다.) 그런데 터미널을 여러개 띄워 놓았을 때 단축키로 바꾸고 싶다. 마우스 쓰기가 너무 귀찮아.. 그런데 vscode는 그게 설정이 안되있다. ctrl+k, ctrl+s : shortcut 설정 들어가서, terminal.focus 를 검색하고 들어가면 나는 이와 같이 shift + alt + 번호로 내가 가고싶은 창을 사용자세팅 하였다. shift + alt + 번호 .. 2019. 6. 20.
GCD algorithm GCD 알고리즘은 유클리드 호제법(Euclidean algorithm)으로도 불린다. 아래와 같은 원리를 이용하여 알고리즘을 짠다. a lemma: if a, b 가 정수이고 둘다 0이 아니면서 a = b*q + r을 만족하는 q, r 이 정수이면 then gcd(a, b) = gcd(b, r) 이를 코드에 그대로 옮기면, 최대공약수를 쉽게 구할 수 있다. 최소공배수는 A와 B를 곱하고, gcd(A, B)로 나누어 주면 구할 수 있다. 이를 이용하면 백준 문제를 쉽게 풀수있다. #include int main() { int a, b, r; scanf("%d %d", &a, &b); int A = a; int B = b; while (b != 0) { r = a % b; a = b; b = r; } pri.. 2019. 6. 11.
9251 LCS LCS 또한 교재에서 볼 수 있는 DP의 전형적인 문제이다. 길이가 각각 i, j인 문자열 x, y가 있다고 해보자. LCS(i, j) 는 문자열 x, y의 최장 공통 부분 수열(LCS)이라고 할 때, 다음과 같이 점화식을 세울 수 있다. LCS(i, j) = LCS(i-1, j-1) + 1 if x[i] == y[j] max( LCS(i-1, j), LCS(i, j-1) ) otherwise 이렇게 만들어놓고, i와 j에 따른 dynamic programming을 구현하기 위하여 d[i][j]를 만든다. 그리고 이 행렬을 잘 채워나가다가, 맨 마지막 오른쪽 부분 즉, d[i][j]가 우리가 원하는 LSC 값이다. #include #include #include using namespace std; in.. 2019. 6. 9.
2293 동전 1 Dynamic Programming의 전형적인 문제, - Optimal substructure - Memoization 알고리즘 문제에서, DP는 메모리와 시간을 아껴주는 도구이고 기존의 방법으로 풀기 껄끄러운 문제에 새로운 해결법을 제시해 주기도 한다. 수학적 기반은, 점화식(Recurrence relation) 1. 문제 파악 1, 2, 5가 주어질 때 10을 만들기 위해 몇 가지 조합으로 10을 만들 수 있는가. 1) 1원 * 10 2) 2원 * 5 3) 2원 * 4 + 1원 * 2 4) 2원 * 3 + 1원 * 4 5) 2원 * 2 + 1원 * 6 6) 2원 * 1 + 1원 * 8 7) 5원 * 2 8) 5원 * 1 + 1원 * 5 9) 5원 * 1 + 2원 * 1 + 1원 * 3 10) 5원 *.. 2019. 6. 9.
Class Class는 언제 사용하는가? 구조체와 관련 함수를 같이 사용하고 싶을 때 1. Constructor, 생성자 멤버변수 초기화 2. Destructor, 소멸자 프로그램 종료시 멤버변수 자동 소멸, 메모리 관리 class BSTNode { private: int key; BSTNode *l, *r; public: BSTNode(int key=0) { this->key = key; this->l = NULL; this->r = NULL; } ~BSTNode() { delete l; delete r; } int get_key() { return key; } void set_key(int key_changed) { this->key = key_changed; } BSTNode* get_left() { retu.. 2019. 6. 8.
5639 이진검색트리 1. 문제분석 트리를 전위순회(preorder)한 결과가 주어질 때, 후위순회(postorder)한 결과를 출력한다. 1 2 3 있으면 전위순회(preorder) : 1 2 3 후위순회(postorder) : 2 3 1 중위순회(inorder) : 2 1 3 (참고) 아이디어 "preorder 입력이 주어지는데, 이 순서대로 이진검색트리(이하 BST)에 삽입하면 BST에 성질에 맞게 입력이 된다. 따라서 이 결과를 preorder로 출력하면 된다." 2. 시간, 메모리 분석 - "노드의 수 10,000개 이하" for each node i // O(N) BST_insert(i) // O(N) 따라서 O(N^2) = 10000 * 10000 = 1억 (1초) OK! - 256MB.... 각 node 1만개.. 2019. 6. 8.
Come back Yuna Kim, 김연아 보호되어 있는 글 입니다. 2019. 6. 6.
728x90