본문 바로가기

분류 전체보기

(224)
[데이터베이스 실습] 1. Oracle Database 및 Oracle SQL Developer 설치 Oracle Database 18c 설치 주소 https://www.oracle.com/database/technologies/xe18c-downloads.html 해당 사이트에서 본인 운영체제에 맞게 다운 받고 압축을 해제한 뒤 setup.exe를 실행하면 된다. ※ win11 환경에서 18c 사용 시 관리자 권한 이슈로 설치가 안 된다는 사람도 있었으나.. 나는 잘 됐었다. 안 되는 경우 19c, 21c와 같은 Pro 버전을 사용하거나 VirtualBox(RAM 6GB 이상)를 사용하여 구동하면 된다. 그 다음에 뭐라뭐라 말이 나오는데 가장 중요한 것은 sys(tem)계정의 비밀번호를 설정하는 것. 절대로 잊어버리면 안 된다. 그리고 폴더 경로에 한글이 들어가면 안 되는 것. 나처럼 뭣 모르고 사용자..
[프로그래밍언어개론 실습] 0. Ocaml 설치 리눅스 환경 필요. 리눅스 설치는 이미 돼있으므로 생략. 1. Ubuntu 환경에 접속하고 계정 생성 2. sudo apt update 명령어 입력. 자세한 설명은 아래 링크에서 https://tttap.tistory.com/130 3. sudo apt-get install ocaml sudo apt-get install opam (opam: OCaml용 패키지 관리자) 4. opam init eval $(opam env) (환경변수 PATH에 추가하는 작업과 같음. 만약 이 명령어가 안 된다면 opam 버전이 낮을 가능성 있음. 업데이트할 것) opam install core (OCaml 필수 라이브러리 설치, dune이 여기에 포함) 5. ocaml --version opam --version dun..
[프로그래머스 SQL 고득점 Kit] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 데이터 그룹핑 문제 https://school.programmers.co.kr/learn/courses/30/lessons/151139 [문제 설명] 8월~10월 사이의 총 대여 횟수가 5회 이상인 차들에 대해 월별로 몇 번 대여 됐는지를 알아내는 문제입니다. 대여 시작일(AS MONTH), 자동차 ID, 월별 대여 횟수(AS RECORDS)를 출력하면 됩니다. 대여가 한 번도 되지 않은 월은 출력하지 않고, 월을 기준으로 오름차순, 그 후에는 자동차 ID를 기준으로 내림차순 정렬해야 한다는 조건이 있습니다. 차근차근 보겠습니다. 출력이 대여 시작일, 자동차 ID, 월별 대여 횟수로 지정되어 있으므로 대여 시작일: date타입인 START_DATE를 월만 잘라서 출력. 자동차 ID: 그냥 CAR_ID 출..
[C/C++] call by value, call by address(pointer), call by reference reference / not reference reference == not copy not reference == value, address == copy ∴ call by value => value copy call by address => pointer copy call by reference => reference
[BOJ 1867] 돌멩이 제거 이분 매칭 문제 https://www.acmicpc.net/problem/1867 [문제 풀이] https://kangwlgns.tistory.com/128 [소스 코드] / C++ #include #include #include using namespace std; int N; vector adj[501]; int B[501]; bool visited[501]; void BtR() { for (int i = 0; i < 501; i++) { B[i] = -1; } } void setVisited() { for (int i = 1; i < N + 1; i++) { visited[i] = false; } } bool dfs(int cur) { visited[cur] = true; for (int next ..
[알고리즘] 쾨닉의 정리 (Kőnig's theorem) (최소 정점 커버) = (최대 매칭) [최소 정점 커버] 위 그림처럼 정점에 색칠을 하면 인접한 간선들이 색칠될 때, 최소한의 정점만 색칠하여 모든 간선을 색칠하는 것. [쾨닉의 정리] https://kangwlgns.tistory.com/120 위 링크에서 상어의 저녁식사를 푸는 스킬에 대해 설명했었습니다. 쾨닉의 정리에서도 해당 스킬을 사용한다고 볼 수 있습니다. 위 링크에 자세한 설명을 적었지만 여기서 간단하게 설명하자면, 우선 이분 매칭으로 최대 매칭을 구하고, 후에 생각을 끼워 맞추는 겁니다. 최소 정점 커버에 사용한 것과 같은 그래프입니다. 위 그래프를 최대 매칭하면 위 그림과 같습니다. (다르게 나올 수도 있습니다.) 최소 정점 커버가 최소한의 정점만 색칠하여 간선을 색칠하는 것이라고 했었습..
[알고리즘] 마나허 (Manacher) [알고리즘 소개] 전체 문자열에서 회문의 개수 및 길이를 구하는 알고리즘 [코딩 방법] 현재 시점에서 최대 길이 회문의 인덱스 c, 최대 길이 회문의 최고 인덱스 r, 그리고 i번째를 중심으로 하는 회문의 반지름 P[i] 짝수 회문도 검사하기 위해 문자열 사이사이에 문자 삽입 (ex. abcde → #a#b#c#d#e#) 반복문을 돌면서 i > r 이라면 P[i] = 0, else라면 가장 긴 회문 안에 현재 인덱스가 들어 있는 것이므로 대칭인 P'[i]( = P[2 * c - i] )에 대해 P[i] == P'[i]임이 보장됨. 즉, P[i] = P'[i]가 되어야 하지만, r안에 들어와 있어야만 P[i] == P'[i]가 보장되므로 P[i] = min(P'[i], r - i) P[i]의 초기값을 빠르..
[BOJ 3295] 단방향 링크 네트워크 이분 매칭 문제 https://www.acmicpc.net/problem/3295 [문제 풀이] 결론부터 말하면 그냥 이분 매칭 문제입니다. 모든 노드에 대한 연결 관계를 간선으로 추가한 후에 최대 매칭을 구하면 됩니다. 이게 왜 평범한 이분 매칭 문제인지 설명해 보겠습니다. 이 문제를 설명하기에 앞서 상어의 저녁 식사와 결이 비슷하여 먼저 설명하겠습니다. 상어 문제는 상어가 서로 먹을 수 있는 관계가 주어졌을 때 서로 먹을 수 있는 최댓값을 구하는 문제입니다. 모든 상어를 이분 그래프 양쪽 집단에 전부 배치하고 먹을 수 있는 관계로 간선을 그어주면 이분 매칭 문제라는 걸 알 수 있습니다. 그런데 이미 먹힌 상어가 다른 상어를 먹을 수 없다는 조건이 붙어있습니다. 이 조건을 해결하는 핵심은 우선 매칭을 ..