본문 바로가기

전체 글

(182)
[편미분] sympy와 diff를 이용한 편미분 sympy를 이용하면 변수가 여러개인 식이라도 특정 변수에 대해 편미분이 가능하다. 또한 편미분 후 값을 대입하여 결과도 확인이 가능하다.
[오일러회전] 오일러회전 행렬 곱 순서와 의미 오일러 회전은 고정축좌표계회전과는 다른 의미를 가진다. 오일러회전중 ZYX회전을 Rzyx라고 명명하는데 이는 행렬곱 Rz * Ry * Rx 로 표현한다. 그리고 이는 Z축을 기준으로 먼저 회전 --> Y축 기준으로 그 다음 회전 --> 마지막으로 X축 기준으로 회전을 의미한다. 참고자료 : https://www.youtube.com/watch?v=Lbkq8pEOFK0 (6분 45초부터 참고, body fixed == Euler 회전, space fixed == 고정축 좌표계 회전)
[merge sort] 머지소트 개념 및 구현 merge sort 개념 퀵소트처럼 대표적인 divide & conquer 알고리즘 중 하나. merge sort는 퀵소트와 비교했을 때, 안정적으로 nlogn의 시간복잡도를 내는 알고리즘이다. 퀵소트, 힙정렬에 비해서 메모리사용량이 더 많다. 평균적으로는 퀵소트보다 더 오래걸린다. 따라서 특수한 케이스가 아니라면 머지소트보다는 퀵소트를 더 많이 사용한다. 머지소트개념은 나누어서 정리해서 합친다는 개념이다. 여기서는 더 이상의 개념설명은 하지 않겠다. merge sort 구현 머지소트를 구현함에 있어서 나는 두가지 방법으로 접근했다.(결과는 같다) 1. 직관적, 순차적인 접근 : divide를 최소단위가 될 때 까지 시행하고서 conquer하는 접근 2. 재귀적인 접근 : divide를 해서 두 개의 p..
[퀵소트 구현] 퀵소트 구현, 최악의 케이스 직접 확인 퀵소트는 평균 시간복잡도가 nlogn인 알고리즘이지만 최악의 경우의는 n^2 의 시간복잡도를 가진다고 한다. 최악의 케이스를 가지는 경우는 배열이 이미 정렬되어있는 경우이다. 이 때, 배열이 오름차순으로 정렬되어있든, 내림차순으로 정렬되어있든 상관없다. 마찬가지로 배열이 모두 같은 값을 가진다고 해도 적용이 된다. 만약 모두 10이라는 값을 가지고 있는 배열도 이미 정렬되어있는 배열이나 마찬가지이기 때문이다. 1. 시간복잡도 계산법 간단하게 생각해서 n개의 데이터에 대해 divde&conquer를 몇번 수행하느냐만 알면 된다. 평균적으로 divide&conquer가 log(n)번 수행되기 때문에 퀵소트의 평균 시간복잡도가 nlog(n)인 것이다. 그런데 최악의 경우에는 divide&conquer가 log..
[윈도우 미디어 플레이어] 음원 재생 속도 조절기능 윈도우 미디어플레이어 화면에 우클릭 --> 고급기능 --> 재생속도설정 에서 속도조절을 할 수 있다.
[우체국 소포 송부] 특급 배송 보낼때 시간에 주의하자 특급배송은 모든 우체국에서 다 되는게 아니라 큰 우체국만 된다. (우리학교 우체국은 안되더라..) 그리고 특급배송은 오전에만 가능한데 일부지역은 9시30분, 일부지역은 10시30분이다.(이 시간은 다 똑같다고 한다.) 참고로 대전으로 보내면 9시30분까지 보내야한다. 우체국 여는 시간이 9시 인걸 생각하면 9시30분에 보내야 하는 소포는 전날까지 바로 보낼수 있을 정도의 상태로 다 만들어져 있어야 한다 !! 그리고 내가 보낼 지역은 몇시까지 보내야하는지 전날까지 전화로 확인해보자!(우체국에 전화로 확인 가능함)
[자료형 변환] string to int, string to double string
[C++ / 구조체 생성자] 구조체를 이름 없이 사용하고 간단하게 값을 할당하고 싶을 때 다음을 구조체 생성자라고 한다. coordinate(double dI, double dJ) : typedef struct coordinate { coordinate(double dI, double dJ) : i(dI), j(dJ) {} double i; // i == y == v == row double j; // j == x == u == col }dCoordinate; 다음과 같이 선언하면 dI를 i에 넣고, dJ를 j에 할당하겠다는 뜻이고, 클래스의 생성자 처럼 사용이 가능하다. 즉, coordinate 구조체를 사용할 때 원래 다음과 같이 사용했다면 구조체 생성자를 이용하면 다음과 같이 초기화가 가능하다. 그리고 이는 객체이름을 따로 설정할 필요가 없을 때, 다음과 같이 사용할 수 있어서 편리하다..