쾌락없는 책임 (공부)
-
[C#] C# string vs stringbuilder, stringbuilder는 어떻게 이득이 될까?쾌락없는 책임 (공부)/C# 짜잘이 2022. 8. 6. 13:19
string vs stringbuilder 기존 C#의 string은 참조 타입이며 수정을 하게 되면 새로운 string 객체가 생기고 새 객체로 대체되는 형식입니다. 이와 동시에 이전 객체는 남아있게 되어 GC 대상이 됩니다. 때문에 자주 변경될 문자열이라면 stringbuilder를 사용해야 한다는 이야기입니다. 왜 string은 immutable이 되었을까? 이는 string이 immutable 객체로 만들어져 있어서 한번 값이 정해진 뒤 수정을 할 수 없기 때문입니다. 그러면 왜 이렇게 변경할 수 없는 객체로 만들어서 가비지를 생성하는, 겉보기에 비효율적인 방법을 체택했을까요? .Net 에서 string이 변경 불가능 객체인 이유는 멀티스레드 환경을 고려한게 커 보입니다. 여러 프로세스가 엑세스를..
-
[C++] C++ 로 중복 없는 랜덤 변수 만드는 방법 - 1쾌락없는 책임 (공부)/C++ 짜잘이 2022. 8. 5. 23:41
서론 (본론만 필요한 사람은 아래로) 연합 동아리 활동을 시작한 2021년, 동아리 카페에서 한 글이 올라왔었습니다. '랜덤 변수를 중복 없이 뽑는 방법은 이거뿐인가요?'. 단순 bool 배열을 통해서 5개 정도의 수를 랜덤 하게 뽑는 내용이었습니다. 이때 당시 이 글을 보고는 '음 일단 맞는데 뭔가 부족하다'라고 생각했었고 이후에 이 문제를 계속해서 마주하기에 이를 알아보고 정리하게 되었습니다. 아래 내용을 보면 아주 간단한 방식으로 하기에 그렇게 만족스러운 답은 아닌 상태입니다. 그러니 혹시나 다른 방법을 알고 계신다면 댓글로 남겨주심 감사하겠습니다. 일단 bool 배열로 visit 체크를 하는건 어떤 문제가 있는가? 일단 이전에 본 bool 배열의 경우 수를 많이 뽑지 않는 경우 문제가 없습니다. ..
-
[Unity] 유니티 내 길찾기 알고리즘을 넣어보기쾌락없는 책임 (공부)/Unity 2022. 7. 24. 16:20
개인 기록용으로 적은 글이니 혹시 길찾기 알고리즘을 알아보고 싶으신 분들은 아래 참고 자료를 참고하시는게 좋습니다. 개요 현재 연합동아리에서 제작하고 있는 게임 '뿔 없는 용'. 조선시대 배경으로 이무기가 승천하는걸 모티브로 삼아서 제작하고 있는 게임으로 딱히 길찾기 알고리즘이 들어갈만한 부분이 없는 게임이었습니다. 그런데 흔히 승천하는 이무기를 맞춰 떨어뜨리는 '지나가던 나그네'에서 이 화살을 유도로 만들면 어떨까? 하는 생각에 오브젝트 풀링으로 화살을 관리하고 각 화살에는 길찾기 알고리즘을 넣어보자는 생각이 들게 되었습니다. 이에 따라 만들고 제작했던 부분들을 한번 써볼려고 합니다. 길찾기 알고리즘을 위한 Grid 생성 일단 기존에 알고있는 다익스트라 알고리즘의 경우 이곳에 적합한 방식이 아니라 '그..
-
[C++] C++ 의 '1LL'은 무슨 뜻일까?쾌락없는 책임 (공부)/C++ 짜잘이 2022. 6. 16. 17:45
개요 + 바로 결론 볼록 껍질 알고리즘 문제를 보다가 1LL 이라는 글을 봤는데 LL은 주로 long long 줄인 모습 같고 앞에 1은 뭘까 생각하고있었습니다. 그래서 찾아본 뒤 기록하기 위해서 글을 쓰는 것입니다. 결론을 먼저 말씀드리면 1LL은 1을 Long Long으로 표현한 것입니다. 숫자LL 일단 기본적으로 C++은 상수를 int 타입으로 계산을 하게 됩니다. #include using namespace std; int main(){ cout
-
[Unity] 유니티 배경 스크롤링을 고민하면서 겪은 일들쾌락없는 책임 (공부)/Unity 2022. 6. 3. 20:13
개요 아트분의 요청이 있었죠. '배경 원경 후경 효과가 있으면 어떨까요?'. 이 제안을 듣고 나서 한번 생각을 해 봤다. 확실히 원경 후경 효과가 들어갈 수 있다면 게임이 더 살아날 것 같았고 이를 승낙하기로 했습니다. '쿠키런' 같은 횡스크롤 게임에서 주로 사용하는 방식인 배경 스크롤링을 조금 개량하면 우리 게임에 넣을 수 있지 않을까 했고 이와 관련한 기능을 준비해 봤습니다. 일단 기능은 만들었다 기능 자체를 만드는 건 어렵지 않았습니다. 이미 시네머신을 활용하고 있어서 카메라는 플레이어를 따라가고 있었고 이를 활용해서 카메라에 아래 스크립트를 달아 뒀습니다. public event Action playerMoveEvent; Vector2 prevPos; private void Start() { pr..
-
[Algorithm] 백준 16938 캠프 준비 - C++, DFS, 백트래킹쾌락없는 책임 (공부)/알고리즘 문제풀이 2022. 5. 18. 17:34
16938번: 캠프 준비 난이도가 10, 30인 문제를 고르거나, 20, 30인 문제를 고르면 된다. www.acmicpc.net #include #include #include using namespace std; int n, l, r, x; int problem[16]; bool selected[16]; int answer = 0; vector selectedProblems; const int MAXP = 10e6+1; const int MINP = -1; // l = 2){ int minLevel = MAXP; int maxLevel = MINP; for(int i = 0; i < selectedProblems.size(); i++){ minLevel = min(minLevel, selectedPr..
-
[Algorithm] 백준 토마토 7569 - C++, BFS쾌락없는 책임 (공부)/알고리즘 문제풀이 2022. 5. 18. 15:11
7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net #include #include using namespace std; const int MAX = 101; int m, n, h; int totalTomato = 0; int tomato[MAX][MAX][MAX]; int moveZ[] = { 0, 0, 0, 0, 1, -1 }; int moveY[] = { 1, -1, 0, 0, 0, 0 }; int moveX[] = { 0, 0, 1, -1, 0, 0 }; queue q; bool I..