Major

    [Algorithm] DP

    public class seq_Matrix { /* * 연쇄행렬 최소곱셈 알고리즘 * 두개 이상의 행렬을 곱할 때, 최소 곱셈 횟수를 구함 * 복잡도 : O(n^3) * DP table의 칸의 개수 n*n = n^2 . * 한개의 칸을 채울 때 필요한 연산의 개수는? * 최악의 경우 DP[1][6]인 경우에 가장 많은 연산을 요구. * 한칸을 채울 때 최악의 경우 n번의 연산을 해야하므로 * O(n^3)의 시간복잡도 가진다. */ public static int minmult(int n, int d[], int P[][]){ int M[][] = new int[n+1][n+1]; for(int i = 0; i < n; i++) M[i][i] = 0; for(int diag = 0; diag < n; di..

    부팅과 종료

    부팅과 종료

    stud2222@com-B70EV-AP5VBGE:~$ ps -ef | more UID PID PPID C STIME TTY TIME CMD root 1 0 0 08:19 ? 00:00:09 /sbin/init splash /sbin/init = /lib/systemd/systemd , symbolic link init process : /etc/init, /etc/init.d, /etc/rc?.d 디렉터리 들의 관리정보 통해서 순차적으로 필요한 프로세스 생성 사용자가 접속할 장치마다 접속을 받는 전담프로세스가 생성되도록 함. 사용자로부터 접속 요청 -> /bin/login 프로세스 생성 후 처리 login process -> get ID,Passwd -> 검증 -> /etc/passwd 파일 지정 프로세..

    ProgTools

    ProgTools

    gcc -o executable source-list -o : 실행 파일 이름 명시, 디폴트 a.out gcc -c reverse.c : object 모듈 작성 실행 파일 생성 gcc test.c module.c mv a.out test 직접 실행파일명 지정 gcc -o test test.c module.c 단계별 컴파일1 gcc -c test.c module.c -다중 모듈 프로그램의 부분 컴파일 : 컴파일 작업의 속도 개선 ex) bingo = bingo.o + hidden.o + check.o + bingo.h 전부 컴파일 및 링킹 : gcc -o bingo bingo.c ........... etc * gcc -c => 오브젝트 파일 생성 .c (assembling) => gcc -o => 실행파..

    사용자 정보 관리

    adduser : UID, GID 중복되지 않게 자동 부여 addgroup : GID 중복되지 않게 자동 부여 UID : 사용자가 로그인할 때 사용한 계정의 UID EUID : 현재 명령을 수행하는 주체의 UID - 실행 파일에 setUid 설정되어 있는 경우 : 해당 실행 파일을 실행한 프로세스의 UID는 사용자 계정의 UID ㄴㄴ 실행 파일 소유자의 UID가 EUID 처음에는 UID = EUID, su 명령으로 계정 전환 후에 UID != EUID who : 사용자 로그인 정보 확인 w : 현재 시스템 사용하는 사용자의 정보, 작업 정보 출력 last : 시스템 로그인, 로그아웃한 정보 출력 stud2222@com-B70EV-AP5VBGE:~$ whoami stud2222 stud2222@com-B7..

    Overwrite script

    명령어 : overwrite source dir newname 인수 갯수 오류 시(3개 미만) 사용법 출력 후 종료 출력 : "usage~" , 종료코드1 source 파일이 존재하지 않으면 오류메시지 출력 후 종료 dir 디렉토리 존재하지 않으면 오류메세지 출력 후 종료 대상파일이 일반파일이 아니면 생략 대상 파일이 쓰기 금지이면 쓰기모드 추가 후 덮어쓰기 성공적으로 종료 시 종료코드 0 #! /bin/bash if (( $# < 3 )); then echo "Usage : Overwrite source dir newname" exit 1 //오류 코드 1 fi if [ ! -f $1 ]; then echo "$1 is not a file" exit 2 fi if [ ! -d $2 ]; then ech..

    DFS(Depth First Search)

    DFS(Depth First Search)

    - 인접 행렬을 이용한 DFS 구현 a[x][i] 값이 1인지(=연결된 간선이 있는지) 확인하면서 방문한 적이 없는 정점을 방문 해야함. void dfs(int x) { check[x] = true; for(int i = 1; i 인접 리스트에 이미 연결된 간선만 저장되어 있기 때문이다. void dfs_list(int x) { check[x] = true; for(int i = 0; i < a[x].length(); i++) { int y = [x][i]; if (check[y] == false) { dfs(y); } } } 배열 visited를 F로 초기화하고 공백 스택을 생성한다. 방문한 정점은 T로. (=visited) 정점 A에 아직 방문하지 않은 정점 B,C가 있으므로 스택에 A 집어넣고 오름..