일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 슬픔
- 2020
- mmdetection
- 공부
- 자살
- BOJ
- 알고리즘
- python
- 다이나믹프로그래밍
- python 강의
- 2021
- 자작시
- C++
- python 강좌
- 철학
- 인생
- 파이썬 강좌
- mmcv
- 강좌
- it
- 파이썬 강의
- 프로그래밍
- 라즈베리파이 모니터
- dynamic programming
- 2024
- dp
- 백준
- 파이썬
- 강의
- 계획
- Today
- Total
목록
전체 글
(128)
반응형
Stargazer
나같은 경우 insert 명령을 실행할때 발생하였는데 insert into instructor select ID, name, dept_name, 10000 from student where tot_cred > 100 에러는 아래와 같이 난잡하게 나왔다. ora-02290: check constraint (sql_itesassnyawjbuwugikoypmrd.sys_c0082514345) violated ora-06512: at "sys.dbms_sql", 그냥 간단히 정리하면 sql_itesassnyawjbuwugikoypmrd -> 시스템 소유자 sys_c0082514345 -> 제약조건이름 이게 알고보니 테이블 생성시에 제약조건을 설정하는 구간이 있었다. 문제의 제약조건은 salary > 29000 ..
단순 합병 문제: 두 시퀀스 A, B를 오름차순으로 주어진다고 할때, 두 시퀀스를 하나로 합병한, 정렬된 시퀀스 C를 구하라(C 크기 = n) 합병 전략: A,B의 최소값 중 더 작은값을 C에 넣는데, 만약 최소값이 A 에 있다고 가정하면, A의 최소값을 C에 넣고, A의 나머지와 B, 그리고 C 를 재귀적으로 함수를 호출하여 합병을 한다.(분할 정복) 합병 수도코드: Merge(A,B,C) if(A is empty) rest of C = rest of B else if(B is empty) rest of C = rest of A else if (first of A
추가 공간을 일반 퀵소트보다 줄이는 알고리즘 추가 공간: $O(n)$->$O(1)$( 재귀적일때는 $O(lgn)$을 사용) 전략은 이전 퀵소트와 같이, 분할 정복을 이용할 것이다. 다만 공간을 추가적으로 사용하지않고, 해야하므로, 요소끼리 스위칭하는 방식으로 해야한다. In-place Quick sort 수도코드: Algorithm inPlaceQuickSort S, l, r Input sequence S , ranks l and r Output sequence S with the elements of rank between l and r rearranged in increasing order if l >= r return i
우리학교 기숙사 홈페이지가 새로 바뀌게 되면서 이전에 쓰던 프로그램이 쓸모 없어졌다. 사실 이전에도 한번 개정한적 있었는데, 그때는 자바스크립트 형식으로 다운받는 형식이라 웹 스크레이핑 하는 프로그램을 하나의 파일로 만들 방법을 못찾아서 관뒀는데 이번에는 실험해보니 가능해졌다. 첨부파일 물론 파이썬으로 만들었기 때문에 모바일에서는 실행이 어려워서 첨부터 컴퓨터용으로 만들었다. 덤으로 코드도 올릴테니 참고할 사람은 참고하는것도 좋을 것이다. 코드: import requests from bs4 import BeautifulSoup import os import datetime base = "https://dorm.inha.ac.kr" url = "https://dorm.inha.ac.kr/dorm/10136..
특징: Worst case에 대해서는 $O(n^2)$ 시간이지만, Average case 에 대해서는 $O(n\log n)$ 시간이 걸린다. 전략: Divide and Conquer(분할 정복): 큰 문제를 여러개의 작은 문제로 분할하여 재귀적으로 처리 후 합쳐서 해결하는 방법 *단계: 1. 분할: 작게 문제를 나눈다.(이때, 나눈 것도 해결전략이 동일한 문제여야한다.) 2. 정복: 재귀적으로 계속 작게 나누면서, 문제를 해결한다.(문제를 해결할 수 있는 가장 작은 단위 까지 나눔) 3. 조합: 해결한 문제들을 조합하여 원래 input에 대한 결과값을 리턴한다. * 분할 정복 알고리즘 수도 코드: solve(I) n=size(I) if(n