본문 바로가기

알고리즘

(4)
게임에서의 벡터와 내적, 그리고 외적 벡터란 뭘까?(참고) 나는 수학에 거의 문외한이다.그렇기 때문에 더 수학을 이해하고자 노력하려고 하며,내 설명은 철저히 나와 같은 문외한들이 이해할 수 있도록 말하는 것을 목적으로 한다.그러므로 다소 틀린 부분, 정확하지 않은 부분이 있을 수 있으며이에 대해 태클을 건다면 당연히 여러분의 말이 정답이다.아 그리고 태클 환영합니다 제발. 나 잘 몰라 알려줘.. 벡터를 알기 전에 우리는 스칼라에 대한 이해와 체에 대한 이해가 필요하지만이건 나도 명확하게 모르고 대충 이해하고 있기 때문에 시간이 되면 나중에 자세하게 적어보기로 한다. > 체(Field)란?간단하게만 말하자면, 체라는 것은 실수나 무리수와는 다르게 수를 정의하는 방법이며대수의 한 정의로, 사칙연산(특히 덧셈과 곱셈. 뺄셈은 덧셈으로 정의가 가능..
[C++] 소수 판별 알고리즘 소수란 무엇일까? 소수는 1보다 큰 자연수 중에서, 1과 자기 자신만을 약수로 가지는 수이다. 몇 개의 숫자를 가지고 생각해 보자. 1) 숫자 '1'은 소수가 될 수 없다. 2) 숫자 '2'는 1과 자기 자신(2) 만이 약수이므로 소수이다. 3) 숫자 '10'은 약수가 1, 2, 5, 10 이므로 소수가 아니다. 4) 숫자 '11'은 1과 자기 자신(11) 만이 약수이므로 소수이다. 1. 그렇다면, N이라는 숫자가 들어왔을 때 소수인지 아닌지를 판별하려면 어떻게 해야 할까? 가장 단순한 방법으로는, 숫자 2부터 N - 1에 도달할 때 까지 나누어 보는 것이다. 예를 들면, 숫자 '10'의 경우, 숫자 2가 10/2 = 5를 달성하므로, 소수가 아니다. 즉, 이를 코드로 작성하면 아래와 같다. #inclu..
[C++] Bubble Sort (버블 정렬) 정렬 알고리즘 중에서 제일 간단하지만 제일 성능이 구린(?) 정렬을 알아보자. Bubble Sort (버블 정렬) 왜 이름이 버블 정렬인가?! 그 이유는 정렬 과정 중에서 원소의 움직임이 마치 거품이 수면 위로 올라오는 듯한 모습이기 때문이라고 한다. 아마도 이런식으로 꾸물꾸물 올라와서 바뀌기 때문에 거품과 같다고 생각한게 아닐까..? 뭔 개소리지 어쨌든, 버블 정렬은 앞에서부터 모든 원소를 찾아보면서 자신과 같다면 자리를 바꾸고, 아니라면 그냥 지나가는 정렬 알고리즘이다. How to do Bubble Sort ? 위와 같은 배열이 있다고 하자. 우리는 이를 오름차순으로 정렬하고 싶다! 1. 첫 원소부터 시작하여 다음 원소를 찾아 나간다. 시작은 첫번째 원소인 5에서부터 시작된다. 뭐 사실 반대로 맨 ..
[C++] Sort 를 시작하기 전에 시간 복잡도가 무엇인지 알아보자 Sort 라는 것은, 말 그대로 무언가를 정렬한다는 것이다. 그리고 우리는 실생활에서도, 프로그래밍을 하면서도 데이터를 정렬할 일이 아주 아주 많다. 그렇기 때문에 우리는 Sort 에 대해 기본적으로 알고 넘어가야 한다. 컴퓨터에서 각종 데이터는 특정한 자료구조로 정의되어지기 때문에 우리가 그냥 보고 생각하듯이 정렬을 할 수 없다. 단순무식한 방법으로 컴퓨터에게 어떤 순서로, 어떤 데이터를 보고 비교하라고 알려 주어야 한다. 또한, 이러한 정렬 방법에 대해서는 예로부터, 그리고 지금까지도 많은 연구가 이루어지고 있다. 즉, 아직까지도 100% 완벽한 정렬 방법은 없다. 하지만, 그럼에도 불구하고 우리는 정렬을 해야 하기 때문에 기존에 연구되어진 정렬 방법들을 알고 넘어가야 한다. 일단, Sort 에 대해..