본문 바로가기
C++ sort & stable_sort sort는 불안정정렬이고 stable_sort는 안정정렬입니다. 이 두가지의 차이점을 먼저 말씀드리겠습니다. 배열이 다음과 같이 나와있을 수 있습니다. 이게 정렬 전 배열입니다. 같은 숫자는 자신의 앞과 뒤의 순서를 알아볼 수 있도록 색깔을 빨강(선) - 주황(후)로 하겠습니다. 일반적인 stable_sort(안정정렬)은 다음과 같이 정렬이 완성됩니다. 순서가 바뀌지 않고 정렬이 완성이 됩니다. 하지만 정렬이 되지 않은 배열을 sort로 정렬하면 다음과 같이 됩니다. 위의 결과와 같이 먼저 왔다고 해서 배열의 앞순서로 온다는 보장이 없습니다. 그렇기에 불안정정렬이라고 합니다. 물론 78의 순서도 서로 달라질 수 있고 25의 앞, 뒤 순서가 올바르게 될 수도 있습니다. 이러한 요소를 잘 고려해서 코딩을 만.. 2021. 7. 7.
퀵소트 VS 머지소트 C++의 헤더에 있는 sort와 stable_sort를 공부를 하다가 sort의 내부적인 sort인 '퀵소트' vs stable_sort의 내부적인 sort인 '머지소트' 가 궁금해져서 이렇게 알고리즘에 대해 살짝 공부를 해보기로 했습니다. https://penpen.tistory.com/entry/Algorithm-Quick-Sort-Merge-Sort-%EB%B9%84%EA%B5%90%EC%B2%B4%ED%97%98 [Algorithm] Quick Sort, Merge Sort 비교체험 ! 이전글에 계속하여.. Quick Sort vs Merge Sort 알고리즘 수업시간에 귀가 따갑도록 들었던 이 두 정렬방법. 당연히 퀵이 빠른거 아니야? 했지만, 누군가는 데이터가 커질수록 Merge가 좋다하고.... 2021. 7. 7.
C++ Vector Container 백준 문제를 풀다가 어떻게 풀어야할지 생각을 하다가 떠오르는 방법이 모두 마음에 들지 않아서 다른 사람들의 풀이를 보다가 vector를 사용하는 것을 보고 이것이 무엇인지 흥미를 가지게 되었습니다. vector Container? vector 컨테이너는 자동으로 메모리가 할당되는 배열입니다. vector를 생성하면 메모리 heap에 생성되며 동적할당됩니다. 속도적인 측면에서는 배열에 비해 성능이 떨어지지만 메모리를 효율적이로 관리하고 예외처리가 쉽다는 장점이 있기 때문에 사용을 합니다. vector는 배열과 마찬가지로 원소들이 하나의 메모리 블록에 연속되게 저장됩니다. 원소가 추가되거나 삽입될 때 메모리 재할당이 발생할 수 있고 상당한 부하가 발생하는것이 단점입니다. C++의 vector는 C++ 표준라.. 2021. 7. 5.
백준 9012 C++ & cin.ignore() https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 이 문제를 풀면서 배운 점은 일단 cin.ignore()에 관해서 배웠습니다. 코드의 제일 밑에 보면 expression string subscript out of range c++이 있는데 이게 제가 처음 코딩을 하고 나서 생긴 오류입니다. 이러한 에러를 처음 만나봐서 해결 방법을 위해 검색을 하였습니다. 그러다가 cin.ignore에 관해서 발견을 하였고 이것을 .. 2021. 7. 4.
백준 10773번 C++ https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 최근에 C++의 stack에 관하여 공부를 해서 다른 백준 문제를 풀었는데 (현재 추가적인 공부가 필요해서 임시저장) 동일하게 문제에서 stack사용을 요구하는 것 같아서 stack으로 풀었습니다. 조건문과 stack의 사용 방법만 제대로 익힌 상태라면 쉽게 풀 수 있었을 것입니다. 이번에 문제를 풀면서 알아낸것은 pop은 그져 꺼내기만 한다는 것이었습니다. to.. 2021. 6. 22.
백준 7568번 C/C++ https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 문제가 너무 쉬워서 시간 초과로 틀리겠다고 생각하고 정답 제출을 했는데 맞아버렸습니다... 2차원 배열을 조금이라도 알고 계신다면 쉽게 풀 수 있는 문제입니다. 이 문제는 쉬우니까 한번 코드를 보시지 않고 직접 풀어보시는 것이 좋을 것 같습니다. 제 생각엔 실버보단 브론즈에 가까운 문제인것 같습니다. #define _CRT_SECURE_NO_WARNINGS #include #inclu.. 2021. 6. 21.
Unity Object Pooling 서론: 공부의 의유 이번에는 Object Pooling에 대해서 공부를 해보았습니다. 이것은 아예 존재 자체도 모르고 있었습니다. 그렇게 다양하게 프로젝트를 해볼때도 생각도 못하고 있었습니다. 이것의 중요성을 알게된 계기는 오픈카톡방에서 누군가가 최적화와 관련된 질문을 하셨고 파괴, 생성을 지양하고 풀링기법을 이용하라고 말씀해주셨습니다. 지금까지 파괴 생성을 했던 저로써는 쇼킹했고 공부의 필요성을 느꼈습니다. 많은 부분에서 도움을 받은 영상입니다. https://www.youtube.com/watch?v=xiojw0lHzro&t=2s Object Pooling의 존재 이유 프로그래밍에서 Object를 생성 or 파괴는 꽤나 무거운 작업입니다. 생성은 메모리를 새로 할당하고 리소스를 로드하는 등의 초기화 .. 2021. 6. 17.
백준 4553번 C/C++ #define _CRT_SECURE_NO_WARNINGS #include #include #include void TriFind(double a, double b, double c) { if (a > b && a > c) { if (a == b + c) { printf("right \n"); } else { printf("wrong \n"); } } else if (b > c && b > a) { if (b == a + c) { printf("right \n"); } else { printf("wrong \n"); } } else if (c > a && c > b) { if (c == a + b) { printf("right \n"); } else { printf("wrong \n"); } } else .. 2021. 6. 14.
C# Unity Delegate 설명 및 사용법 이번에는 Delegate에 관해서 공부를 해보려고 합니다. 대학교 졸업작품을 하는 도중에 친구가 Delegate와 관련하여 질문을 하였고 저는 잉?? 그게 뭐지라는 생각에 이번 공부를 진행하게 되었습니다. Delegate란 함수를 넣어 변수처럼 사용할 수 있는 형태입니다. 밑에 예시를 보여드리겠습니다. 현재 위 사진과 같이 Cube라는 Object에 Delegate_Ex라는 C# Script를 추가를 하였습니다. Delegate_Ex는 다음과 같습니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Delegate_Ex : MonoBehaviour { delegate void MyDele.. 2021. 5. 9.