BOJ - 나무 조각 2947
·
코딩테스트
해결방법버블 정렬의 일종이라고 생각하면 쉽게 풀 수 있다.맨 앞에서부터 바로 옆의 숫자와 비교하고 교환하는 식으로 생각하면 편하다. 정답 코드#include using namespace std;void printArray(int arr[], int size){ for (int i = 0; i > arr[i]; } while (true) { bool Swap = false; for (int i = 0; i arr[i + 1]) { swap(arr[i], arr[i + 1]); Swap = true; printArray(arr, 5); } ..
자료구조) 이중 연결 리스트 (Double Linked List) - 1
·
Programming/자료구조 & 알고리즘
이중 연결 리스트기존의 방법(단일 연결 리스트)으로 리스트의 데이터를 찾으려면 링크를 타고, 타고, 타고 내려가서 맞는게 나올때까지 들어가야 했다.이 방법을 어떻게 개선할 수는 없을까?그림처럼 노드를 두 개로 만들면 된다. 이전 노드의 주소를 저장하는 노드(PrevNode)와 다음 노드의 주소를 저장하는 노드(NextNode).이제 우리는 양방향으로 데이터를 찾을 수 있게 되었다.이 방식의 장점은 단일 연결 리스트에 비해 접근이 빠르다는 점이다. 예를 들어 1000개의 데이터 중 900번째 데이터에 접근해야 한다면 단일 연결 리스트는 900번 이동해야 하지만, 이중 연결 리스트는 꼬리부터 100번 움직이면 접근할 수 있다. 이중 연결 리스트에 다른 노드를 연결은 어떻게 할 수 있을까? 맨 처음 상태이다...
게임수학) 벡터 - 2
·
Programming/기타
벡터 연산덧셈, 뺄셈, 교환법칙, 결합법칙기하벡터의 경우에는 시각적으로 벡터를 보여줄수 있으므로, 기초적인 연산법칙이 성립한다는 것을 보여주는것도 쉽다. 우리가 고등학?생때 배웠었던 덧셈, 뺄셈, 교환법칙, 결합법칙을 벡터에서도 성립한다는 것을 그림을 통해 알 수 있다.증명은 생략하고 대신 설명을 한번 해보자. 교환법칙이란 a + b를 순서를 바꿔서 b + a로 표기해도 성립한다는 내용이다. 그림에서는 좌상단에 해당한다.벡터 b와 크기는 같으나 방향이 정반대인 벡터를 역벡터 -b로 정의하는데, 우상단에 해당한다.원본 벡터와 그 역벡터를 더하면 영벡터가 된다. 우상단 그림에서 b와 -b벡터가 합이 0이 되는것을 확인할 수 있다.마지막으로 (a + b) + c = a + (b + c)와 같이 괄호의 위치를 ..
BOJ - TV 크기 1297
·
코딩테스트
해결방법대각선이란 피타고라스 정리를 이용하여 그 값을 구할수 있다. 여기서는 비율을 알고 있기 때문에 비율을 가지고 대각선의 비율을 구할 수 있다. 그 값을 이용하여 실제 높이와 너비를 구하면 된다.또한 floor 함수를 이용하여 소수점이 나온다면 버림을 해준다. 정답 코드#include #include using namespace std;int main(){ int D, H, W; cin >> D >> H >> W; double scale = D / sqrt(H * H + W * W); int Height = floor(H * scale); int Width = floor(W * scale); cout
BOJ - 종이접기 16504
·
코딩테스트
해결방법문제를 반으로 접고, 변수에 저장하고... 하는 것보다 그냥 처음부터 전부 더하는게 훨씬 빠르고 정확해서 그렇게 만들었다.추후 실력이 더 늘어난다면 한번 정석?대로 푸는 방식을 도전해봐야겠다... 정답 코드#include using namespace std;int main(void){ int N = 0; long long Ent = 0, K; cin >> N; for (int i = 0; i > K; Ent += K; } } cout
자료구조) 연결 리스트(Linked List)
·
Programming/자료구조 & 알고리즘
가변형 배열에 대하여연결 리스트는 자료구조를 공부할 때 가장 먼저 나오는 자료구조이다.이 리스트라는 이름에서 유추 가능한 것처럼 목록 형태로 이루어진 데이터 형식을 의미한다. 왜 연결 리스트를 사용하는가?데이터가 고정되어 있다면, 즉 수가 정해져 있다면  = 당연히 배열을 사용하면 된다.예를 들어 이 맵에 라이트가 4개 정도 배치될 것이다 라고 한다면 Light light[4]; 처럼 사용하면 된다.혹은 array light(4) 같은 식으로 말이다. 그러나 일반적인 배열로는 IEnumerator를 다룰 수 없다. 무슨 소리냐면, 배열이 늘었다, 줄었다 하는 상황을 컨트롤 할 수 없다는 것이다. 수가 한정된 상황이라면 제어가 가능할 수도 있지만, 대부분의 상황은 그런식으로 흘러가지 않는다. 따라서 가변형..