컴퓨터(19)
-
알고리즘 공부 1
갓생을 살기 위해서 열심히 공부하기로 했다. 인프런에 C# 유니티 & 서버개발을 다루는 정말 좋은 강의가 있다. 기초에 대해서 잘 나와서 이 강의를 들음! 그래서, 이번 시간에는 미로를 만드는 기초 알고리즘에 대해 알아보았는데 SideWinder(?) 알고리즘이라고 한다. 간단하게 길을 막아놓고 점을 하나씩 찍고? 그 점에서 2분의 1 확률로 오른쪽, 아래로 가는 방식임 다만 오른쪽으로 가다가 아래가 나왔을때 내가 간 연속된 지점중에 하나를 선택해서 아래로 내려가는 방식! 약간 헷갈리는 부분이 있었다. x - randomIndex * 2 부분인데;; 칸이 두칸 간격(길 / 벽 / 길) 이라서 *2를 해주고? 거꾸로 두칸씩 가서 -를 하는것 그리고 마지막에 이렇게 막아두는 이유는 벽에 둘러쌓여있지 않아서...
2023.10.26 -
퀵 정렬 (Quick Sort)
퀵 정렬에 대해서 알아보자.. 앞서 설명한 버블 정렬과 선택 정렬보다 우수한 성능을 보여주는 정렬 알고리즘이다. 그냥 간단히 알고리즘에 대해서 보자면 키 하나를 정하고? 키를 기준으로 키보다 큰것 키보다 작은것을 구별해서 분할하는 과정이다. 예시들 들어 이렇게 무작위로 나열된 수가 있다고 해 보자. 키를 정한다. 그리고 오른쪽으로 가는 화살표와 왼쪽으로 가는 화살표를 그리자. 오른쪽으로 가는 화살표는 Key보다 큰 값을 찾는 화살표다. 왼쪽으로 가는 화살표는 Key 보다 작은 값을 찾는 화살표다. 그래서 이제 화살표가 찾는만큼 길을 간다. 그리고 화살표는 여기에 위치하게 된다. 이때 두 요소의 자리를 교체한다. 또 다시 화살표를 그리고, 출발한다. 이번에는 화살표가 교차되어 있다. 그렇다면 키보다 작은 ..
2023.10.16 -
정렬 알고리즘 (버블 정렬,선택 정렬)
저번 셔플에 이어 금요일의 주제는 정렬 알고리즘 (버블,선택)이다. 정렬은 우리가 원하는 대로 순차적으로 1..2..3....100까지 되게 하는것이다. 그 목적을 이루기 위해 여러 알고리즘들이 있는데.. 가장 접근하기 쉬운 버블 정렬과 선택 정렬 알고리즘을 알아보자. 먼저 버블정렬은 간단하게 말하면, 앞과 뒤를 교환하는것이다. 여기 무작위로 섞인 카드가 있다고 해 보자. 2,1,5,3,4 이것을 정렬하고 싶다. 그렇다면!! 맨 앞부터 (앞과 그 옆) 두개의 카드를 골라 비교한다. 그래서 첫 번째 카드 2와 근접한 카드 1을 골라서 서로 비교를 한다. 2가 1보다 크니까 서로 위치를 바꾼다. 그러면 1,2가 된다. 그렇다면 이제 두 번째 카드를 고른다. 두 번째 카드는 2이다. (아까 바꿨으니까) 그리고..
2023.10.15 -
빅 엔디안 리틀 엔디안(Byte Order) - 2
왜 Byte Order를 사용할까? 먼저 산술에 관한 이야기이다. 어떤 수를 더한다고 했을 시 Big Endian 방식으로 저장된 수와 Little Endian 방식으로 저장된 수가 있다고 해보자. Big Endian 방식으로 더하기를 한다고 하면, 1234 + 1823 MSB 부터 더한다. 천의자리는 2 백의 자리는? 자리올림이 발생하였다. 다시 천의 자리로 가서 3 백의 자리 0 십의 자리 5 일의 자리 7 이런식으로 된다. 하지만 Little Endian 방식은 일의 자리 7 십의 자리 5 백의 자리 자리올림 발생 0 천의 자리 2 이런식으로 자리올림이 발생 할 때 편하게 계산이 가능하다. (우리가 실제로 수를 더할때와 동일하다.) 그 외 형변환, 디버깅 등 각 각 장, 단점이 있다고 한다. CPU..
2023.10.15 -
빅 엔디안 리틀 엔디안(Byte Order)
(작곡 프로그램을 개발하기 전에 컴퓨터 공부를 좀 해야된다.. 왜냐하면 결국 파일에 기록을 하거나 읽어야 되기 떄문.. ) 컴퓨터의 바이트 저장 방식은 두가지로 나뉜다고 한다. 첫 번째는 빅 엔디안 - big endian 두 번째는 리틀 엔디안 - little endian 여기서 빅 엔디안은 무슨 저장 방식이냐! 만약 0x123456 를 메모리에 저장한다고 할 때 이 수의 MSB부터 저장하는 방식이라고 한다.. 여기서 또 MSB는 무엇이냐..바로 최상위 비트라고 할 수 있다. 만약 1010 이라는 이진수가 있다면, 1010의 MSB는 맨 좌측 비트 1이고 반대로 LSB는 맨 우측 비트 0이다. 그렇다면, 빅 엔디안 방식으로 만약 0x123456 을 저장을 한다고 했을 시 MSB 부터 저장을 하니 메모리 ..
2023.10.14 -
Shuffle
강사님께서 따끔한 한마디를 하신 후, 반에서 미션에 참가하는 모임을 만들었다. 그래서 나도 참가했다. 하루에 한번 미션을 수행해야 한다. 오늘의 주제는 셔플이다. 1부터 100까지의 수를 나열하고 무작위로 섞는것이다. 먼저 배열에 1부터 100까지의 수를 담는다. 여기서 어떻게 섞지? 라는 의문이 들수도 있는데.. 너무 추상적으로 생각하기보다는 내 앞에 10개의 공이 있고 공에 번호가 붙여져있고(로또공) 그게 나열되있다고 생각해보자. 당신은 어떻게 공을 섞을것인가? 나라면, 아무 공이나 고르고 또 공을 골라서 위치를 바꿀것이다. 만약에, 2를 골르고 위치를 4와 바꾸고 싶다면 2와 4를 교환하면 된다. 교환하면 되는데, 좀만 더 생각해서 모든 공들이 섞일 수 있는 기회를 주고싶다. 일단, 교환이라는 개념..
2023.10.13