![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdC0uYP%2FbtqJ3ihIDcH%2FMAriKcY8Pqv8xAzEO0zK50%2Fimg.png)
[알고리즘 문제] 41. 연속된 자연수의 합
2020. 10. 2. 04:32
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int main(void) { int n, i, j, sum, num, cnt, cnt2 = 0; bool flag; cin >> n; i = n / 2; if (n % 2 != 0) i += 1; for (; i >= 0; --i) { sum = 0; cnt = 0; num = i; flag = false; while (true) { sum += num; if (sum == n) { flag = true; ++cnt2; break; } else if (sum > n) break; --num; ++cnt; } if (flag) { for (j = cnt; j > 0; --j) cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAPCRS%2FbtqJWSc2SWM%2FEbfxoiFKwComQdDCsQGEKk%2Fimg.png)
[TIL] 2020-10-01
2020. 10. 1. 21:14
TIL(Today I Learned)
게임 제작 : 어메이징 볼링 Tag: 일반적인 경우, 1:1 비교 / Layer: 물리 관련, 필터링 여러 개 가능 Physics.OverlapSphere(Vector3 위치, float 반지름): 가상의 Sphere를 그려서 겹치는 Collider 배열을 반환해 준다. 오브젝트들이 랜덤으로 생성될 수 있는 범위를 Box Collider로 지정한다. Camera - Projection Perspective: 한 소실점으로 모인다. 멀리 있는 건 작게, 가까이 있는 건 크게 보인다. Orthographic: 원근감이 없다. Property: 변수처럼 사용할 수 있지만, 내부에서는 함수로 작동한다. ref 키워드: 함수 안에서 변경된 값을 그대로 들고 나온다. Update(): 화면이 갱신될 때마다 호출된다..
[TIL] 2020-09-30
2020. 9. 30. 23:41
TIL(Today I Learned)
평행이동과 좌표계 transform.Translate()는 기본적으로 Local space를 기준으로 움직인다. 단, 함수 옵션으로 Space.Self(Local), Space.World(World)를 넣어 기준점을 지정할 수 있다. Inspector view의 transform은 부모의 상대 좌표를 기준으로 한다. 상대적인 기준이 될 부모 오브젝트가 존재하지 않는 오브젝트는 월드 좌표를 기준으로 한다. transform.position은 Global space 기준 좌표, transform.localPosition은 Local space 기준 좌표이다. rotation, scale 또한 Rotation/localRotation, lossyScale/localScale이 존재한다. 회전과 쿼터니언 Qua..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSOJa2%2FbtqJP6J7zKW%2F18yWU5uQrtvR2C2KPgGMK0%2Fimg.png)
[TIL] 2020-09-29
2020. 9. 29. 23:18
TIL(Today I Learned)
게임 제작 : 소코반(창고지기) Material: Shader + Texture Albedo: 기본 색상 Smoothness: 물체의 표현이 반들반들한 정도 Input.GetAxis("Horizontal") Input.GetAxis - 직접 키가 연결돼 있는 게 아니라, 이름을 찾아가서 맵핑되어 있는 키를 가져온다. Input Manager는 조이스틱을 지원하기 때문에 float형으로 값을 처리한다. Rigidbody.AddForce - 힘이 주어지고, 해당 힘을 내부에서 계산해서 관성이 적용된다. Rigidbody.velocity - 바로 속도를 컨트롤할 수 있다. Time.deltaTime: 화면이 한 번 깜빡이는 시간 = 한 프레임의 시간 youtu.be/uZA1z90x1Eg
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZrLAF%2FbtqJU4d1VCt%2F4nKG0JbRKtokkx9yRY7Y80%2Fimg.png)
[알고리즘 문제] 40. 교집합(투포인트 알고리즘)
2020. 9. 29. 22:38
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int main(void) { int n, m, i, p1 = 0, p2 = 0, p3 = 0; cin >> n; vector vN(n); for (i = 0; i > vN[i]; sort(vN.begin(), vN.end()); cin >> m; vector vM(m); for (i = 0; i > vM[i]; sort(vM.begin(), vM.end()); vector vResult(n+m); while (p1 vM[p2]) ++p2; else {..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNTmvy%2FbtqJVphVxMS%2FK4wGxSzIMXurw8QgruZsvK%2Fimg.png)
[알고리즘 문제] 39. 두 배열 합치기
2020. 9. 29. 22:08
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int main(void) { int n, m, i, j; cin >> n; vector vN(n); for (i = 0; i > vN[i]; cin >> m; vector vM(m); vector vAnswer; vAnswer.resize(n + m); for (i = 0; i > vM[i]; i = j = 0; while (true) { if (vN[i] > vM[j]) { vAnswer[i + j] = vM[j]; ++j; } else if (vN[i] < vM[j]) { vAnswer[i + j] = vN[i]; ++i; } else { // 같은 경우 ..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbad3qw%2FbtqJUNpZMaA%2FSuLcnot4RLHEfku2lS8aLK%2Fimg.png)
[알고리즘 문제] 38. Inversion Sequence
2020. 9. 29. 21:01
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int main(void) { int n, i, j, temp; cin >> n; vector is(n); vector os(n); for (i = 0; i > is[i]; os[n - 1] = n; for (i = n - 2; i >= 0; --i) { temp = i + 1; for (j = 0; j < is[i]; ++j) { os[i + j] = os[i + j + 1]; } os[i + j] = temp; } for (i = 0; i < n; ++i) cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgTIYZ%2FbtqJIL7EEOG%2FMrGZtV1FcV8eAZkKbxUQUk%2Fimg.png)
[자료구조] 더블 링크드 리스트(Doubly Linked List) (C++)
2020. 9. 29. 11:44
자료구조, 알고리즘
개념 링크드 리스트의 탐색 기능을 개선한 자료구조이다. 양방향으로 탐색이 가능하다. 코드 자체는 링크드 리스트와 크게 다른 게 없다. 삽입, 삭제 시 양방향인 것만 신경 쓰면 된다. template struct Node { T data;// 데이터 Node* prevNode;// 이전 노드를 가리키는 포인터 Node* nextNode;// 다음 노드를 가리키는 포인터 Node(T value) : data(value), prevNode(NULL), nextNode(NULL) {} }; template class DoublyLinkedList { Node* head; Node* tail; int size = 0; public: DoublyLinkedList() : head(NULL), tail(NULL) {..
[TIL] 2020-09-28
2020. 9. 28. 23:26
TIL(Today I Learned)
메시지와 브로드캐스팅 MonoBehaviour 1. 컴포넌트로써 게임 오브젝트에게 추가될 수 있다. 2. 유니티의 통제를 받는다. 3. 유니티 이벤트 메시지를 감지할 수 있게 된다. 유니티 엔진은 컴포넌트의 초기화 메소드 등... 메시지에 담아서 브로드캐스팅한다. 메시지 1. 보내는 쪽은 누가 받는지 신경 쓰지 않는다. 2. 받는 쪽은 누가 보냈는지 신경 쓰지 않는다. 3. 메시지에 명시된 기능을 가지고 있으면 실행, 없으면 무시한다. 브로드캐스팅: 메시지를 무차별적으로 많이 보내는 것 => 복잡한 참조 관계를 끊고 라이프 사이클을 스스로 관리할 수 있게 한다.
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZJsxC%2FbtqJPB9CVhi%2FmsKmqeTL9ZHe38XOEo0zl0%2Fimg.png)
[알고리즘 문제] 37. Least Recently Used(카카오 캐시 문제 변형)
2020. 9. 28. 13:48
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int main(void) { int s, n, i, j, temp, idx; cin >> s; cin >> n; vector vSize(s); vector vNumber(n); for (i = 0; i > vNumber[i]; idx = 0; temp = 0; for (j = 0; j < s; ++j) { if (vNumber[i] != vSize[j]) continue; idx = j; temp = vSize[j]; break; } // 현재 vSize에 있는지 체크, 해당 인덱스 가지고 있어야 함 if(idx != 0) { // 맨앞으로 꺼내오기 for (j = idx - 1; ..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8JDYo%2FbtqJF0bYpiu%2FrOabaGgpXKjoT9mlg4EqDK%2Fimg.png)
[알고리즘 문제] 36. 삽입정렬
2020. 9. 28. 13:32
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int main(void) { int n, i, j, temp; cin >> n; vector vInt(n); for (i = 0; i > vInt[i]; for (i = 1; i = 0; --j) { if (vInt[j] > temp) { vInt[j + 1] = vInt[j]; } else break; } vInt[j + 1] = temp; } for (i = 0; i < n; ++i) cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdyEGLp%2FbtqJHbK2thF%2Fo2kwKLhAYKa8oyktpHegj1%2Fimg.png)
[알고리즘 문제] 35. Special Sort(구글 인터뷰)
2020. 9. 28. 13:19
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int main(void) { int n, i, j, temp; cin >> n; vector vInt(n); for (i = 0; i > vInt[i]; for (i = n - 1; i >= 0; --i) { for (j = 0; j 0 && vInt[j + 1] < 0) { temp = vInt[j]; vInt[j] = vInt[j + 1]; vInt[j + 1] = temp; } } } for (i = 0; i < n; ++i) cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk6Cia%2FbtqJINiPl0m%2FWqKCLAas4Hqce7JWmXoszK%2Fimg.png)
[알고리즘 문제] 34. 버블정렬
2020. 9. 28. 13:12
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int main(void) { int n, i, j, temp; cin >> n; vector vInt(n); for (i = 0; i > vInt[i]; for (i = n - 1; i >= 0; --i) { for(j = 0; j vInt[j+1]) { temp = vInt[j]; vInt[j] = vInt[j + 1]; vInt[j + 1] = temp; } } } for (i = 0; i < n; ++i) cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcg4sNw%2FbtqJKwU1WiF%2F7ltAjChuWcekgK0vB6Cff1%2Fimg.png)
[TIL] 2020-09-27
2020. 9. 27. 23:24
TIL(Today I Learned)
미니 RPG tag를 사용하면 오브젝트를 손쉽게 찾을 수 있다. magnitude를 사용할 경우, 루트 값을 적용하기 때문에 조금 느릴 수 있다. 따라서 성능 최적화를 하고 싶다면 sqrMagnitude를 이용해서 제곱값을 가지고 처리한다. float distance = (player.transform.position - transform.position).magnitude; float distanceSqr = (player.transform.position - transform.position).sqrMagnitude; 아직 참조 중이기 때문에 메모리에서 날라가지는 않았지만, null 체크 시 null로 인식하게끔 강제로 변경한다. 연산자 오버로딩 => Object 클래스에 존재한다. GameObjec..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj1DoU%2FbtqJFZDEUyj%2F4lS4ZrEI9PQXcKMt1YWC31%2Fimg.png)
[알고리즘 문제] 33. 3등의 성적은?
2020. 9. 27. 21:03
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int main(void) { int n, idx, temp, min = 2147000000, cnt = 0; cin >> n; vector vInt(n); for (int i = 0; i > vInt[i]; // 내림차순 선택 정렬 for (int i = 0; i vInt[idx]) idx = j; } temp = vInt[i]; vInt[i] = vInt[idx]; vInt[idx] = temp; } for (int i = 0; i < n; ++i) { i..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbb7csP%2FbtqJCSMtecj%2FUw6oWzV7IDOVxhJ3tRLCjK%2Fimg.png)
[알고리즘 문제] 32. 선택정렬
2020. 9. 27. 18:43
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int main(void) { int n, temp; cin >> n; vector vInt(n); for (int i = 0; i > vInt[i]; for (int i = 0; i vInt[j]) { temp = vInt[i]; vInt[i] = vInt[j]; vInt[j] = temp; } } } for (int i = 0; i > vInt[i]; for (..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6rKSf%2FbtqJIMqan4p%2FfaAE1dknaICCX5B9oolhpk%2Fimg.png)
[알고리즘 문제] 31. 탄화수소 질량
2020. 9. 27. 18:31
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int main(void) { char c[10]; int i, pos, a = 0, b = 0; cin >> c; // C가 한 개인 경우 if(c[1] == 'H') { a = 1; pos = 1; } else { for(i = 1; c[i] != 'H'; ++i) { a = a * 10 + (c[i] - 48); } pos = i; } // H가 한 개인 경우 if (c[pos + 1] == '\0') b = 1; else { for(i = pos+1; c[i] != '\0'; ++i) { b = b * 10 + (c[i] - 48); } } cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceMS0R%2FbtqI4UifOHq%2Fq0GsymHbYA7A6PfZY6tsx1%2Fimg.png)
[자료구조] 링크드 리스트(Singly Linked List) (C++)
2020. 9. 27. 00:44
자료구조, 알고리즘
개념 각 요소를 노드(Node)라고 부르며, 링크드 리스트는 '노드를 연결해서 만드는 리스트'라고 해서 붙여진 이름이다. 링크드 리스트의 노드는 데이터를 보관하는 필드와 다음 노드 주소를 가리키는 포인터로 이루어져 있다. 데이터가 늘어날 때마다 노드를 만들어서 테일에 붙이면 된다. 리스트 사이에 새로운 노드를 끼워 넣거나 제거하는 것도 간편하다. template struct Node { T data;// 데이터 Node* nextNode;// 다음 노드를 가리키는 포인터 Node(T value) : data(value), nextNode(NULL) {} }; template class LinkedList { Node* head; Node* tail; int size = 0; public: LinkedLi..