전체 글 30

[알고리즘] 이진 탐색과 숫자 빠르게 찾기 문제 풀기🤓

이진 탐색(Binary Search)란?정렬된 배열(또는 리스트) 에서 특정 값을 찾기 위해 사용하는 탐색 알고리즘이며 탐색 범위의 중간 값(mid)을 기준으로 찾고자 하는 값과 비교한 뒤, 값의 크기에 따라 왼쪽(left) 또는 오른쪽(right) 절반만 다시 탐색하면서 범위를 점점 좁혀 나가며 탐색함. (위 그림에는 low,high라 표시되어있지만 low를 left, high를 right로 치환해서 설명하겠습니다.) 위 그림은 "정렬된" 배열에서 34라는 값을 찾고 싶다고 할 때 이진탐색이 일어나는 과정을 그린 그림입니다.처음에 0번째 인덱스를 left로 두고 맨 마지막 인덱스를 right, 그리고 그 둘의 중간 인덱스를 mid로 두고 탐색을 시작합니다. (찾고자하는 값을 n이라고 하겠습니다) ..

[C#] event키워드는 무엇이며 숨겨진 역할은 무엇인가?🤓

이 글을 읽는 당신이 만약 C#을 좀 하시는 분들이라면 "델리게이트와 액션"을 사용해보셨을 겁니다.그리고 이 둘을 배울 때 항상 같이 배우는 녀석이 있는데요. (like. 마트 2+1 행사마냥 엌)바로 "event"라는 키워드입니다.public event Action MyAction;이 키워드는 델리게이트 앞에 붙을 수 있으며 이 키워드는 2가지 역할을 수행하며 저 2가지말고도 어떠한 영향을 끼치는지 알아보겠습니다. 1. 외부에서의 호출을 막는다. 😡event키워드는 외부에서 호출, 즉 Invoke시키는 것을 막아줍니다.public class GameManager : MonoSingleton{ public event Action OnPlayerDeath; public void Play..

[C#] == 연산자와 Equals, ReferenceEquals🤓

우리는 코드를 작성하면서 어떤 것과 어떤 것을 비교할 때가 있습니다.그때 우리는 "비교 연산자" 라는 것을 사용합니다. (==, !=, >, 이중에서 == 비교를 할 때 서로 같은지 다른지를 체크하는 녀석입니다.이 친구처럼 C#에서 서로 같은 녀석인지 비교를 하게 해주는 녀석들은 더 존재합니다. 이 글에서는 이 녀석들을 알아보겠습니다.수텝 1. == 연산자👶== 연산자는 가장 일반적으로 사용되며값 형식일 경우(int, bool 등등) 변수에 저장된 실제값이 같은지 비교합니다.참조 형식일 경우(class등등) 두 변수가 같은 메모리 위치를 가리키는지 (같은 객체를 가리키는지) 비교합니다.특징으로는 연산자 오버로딩이 가능합니다.여기서 연산자 오버로딩은 후술할 Equals의 재정의와 비슷하며 둘다 두 비교 ..

[유니티] RenderPipeline과 RenderPipeline Converter🤓

🤓렌더파이프 라인이란?렌더파이프 라인은 유니티말고 컴퓨터 그래픽에서도 자주쓰이는 용어입니다.간단히 3차원에서 만들어진 모델을 2차원 상에 투영시켜 그려내는 과정을 말하는데요.이 과정에서는 앞서 말한 3D 모델, 라이팅, 그림자, 쉐이딩 등등의 모든 그래픽 처리가 포함되어있습니다.이런 녀석인 렌더파이프 라인은 유니티에서 총 3가지를 제공합니다. 1. SRP(URP, HDRP) 🐷Scriptable Render Pipeline의 줄임말로, 개발자가 직접 C# 기반으로 렌더링과정을 제어할 수 있는 현대적인 방식입니다.SRP에서 또 URP, HDRP 2가지로 나뉘는데요. 1-1. URP🥰Universal Render Pipeline의 줄임말로, 대부분의 프로젝트에서 범용성있게 쓰이는 렌더파이프 라인입니다...

백준 1158번: 요세푸스 문제 풀어보기 (C++)🤓

실버4 짜리 문제문제 링크: https://www.acmicpc.net/problem/1158 이 문제는 배열이나 벡터, 큐 등등 여러가지로 풀 수 있지만 가장 효율적인 큐로 한번 풀어보았습니다.왜 큐가 가장 효율적인지는 코드에서 설명하겠습니다. #include#includeusing namespace std;int main(){ int n, k; cin >> n >> k; queue que; int length = 0; for (int i = 1; i ";} 우선 요세푸스 문제를 몇번째 사람을 제거할지 고를 때 그만큼 앞에 사람을 뒤로 옮기면 된다는걸 알 수 있는데.이는 큐의 원리 속에서 특히 원형큐에 원리와 일치한데,여기서 다른 자료형보다 더 효율적인 이유가 나온다. 배열을 예시로 들자면 몇번째 ..

[C#] 박싱과 언박싱🤓

public class TestBlog{ static void Main(string[] args) { object a = 10; }} 위 코드는"정수형"인 10을 담은 "object" 형식에 변수 a입니다그럼 a에 담겨진 저 10이라는 값은 어디 메모리에 할당될까요?우리는 object형식은 참조형식이기 때문에 힙메모리에 할당될 것이라고 생각할 것 입니다.실제로도 힙메모리에 할당되지만, 뭔가 좀 이상합니다. 10이라는 "정수"는 int나 long, float같은 값 형식에 담을 수 있는 데이터인데 값 형식이 참조형식으로 바뀌는 상황이 발생합니다. 우리는 이를 박싱이라고 부르는데요. Boxing(박싱)값형식 데이터를 참조형식 변환해 힙메모리에 할당하는 것을 말합니다. 그럼 반대로..

[C++] 난수와 rand,srand 함수🤓

그거 아시나요? 사실 우리가 아는 Random은 사실 "랜덤"하지 않습니다.컴퓨터는 기본적으로 무작위 수를 절대 뽑아낼 수 없는데요.그럼 랜덤한 값을 뽑는 기능들은 어떤식으로 만드는 것일까요? 난수정의된 범위 내에서 무작위로 뽑힌 수. C++에서 난수를 가장 쉽게 구할 수 있는 함수가 있습니다. 바로 rand()라는 함수인데요.#includeusing namespace std;int main(){ int num; num = rand(); cout rand로 뽑은 값을 출력해보면 아마 이런 값이 나올 겁니다. 분명 난수라 하였는데 rand를 호출해보니 계속 41만 출력하는데 무슨 일일까요?이번에는 한번 10번 반복해서 출력해봅시다.#includeusing namespace std;int main(){ f..

개발관련/C++ 2026.03.10

[C#] Discard 무시 항목 "_"🤓

한정자 중에는 "private"라는 한정자가 있습니다.private한정자는 클래스 내에서만 참조할 수 있게 해주는 한정자죠. 하지만 C#에서는 private를 "생략"할 수 있습니다. 아래 코드를 보면private int a;int a;위 두 코드는 완전히 똑같은 코드인데요.다만 다른점은 private를 "명시적"으로 적어놨나 여부입니다. 그럼에도 사람들은 private를 적어놓는 이유는 무엇일까요?바로 "가독성" 때문이죠. 오늘 알려드릴 "_" 이 문법도 가독성과 크게 연관되어있습니다. Discard _ 이란?C#에서는 의도적으로 사용되지않은 임시변수인 Discard를 제공하묘Discard변수는 "_" (언더바 또는 언더스코어라고 부름)로 표시합니다. 왜 Discard를 사용해야하나요? 프로그래밍을 하..

[유니티] 지터링과 시네머신 브레인의 속성을 이용한 해결법🤓

위 GIF를 보면 시네머신을 사용한 프로젝트에서 플레이어가 끊겨보이는 현상이 발생합니다.이는 "지터링"이라는 현상 때문인데요. 지터링이란카메라 좌표계가 정밀한 좌표 계산을 할 때 발생하는 미세한 떨림 및 끊김 증상을 말합니다.위 상황처럼 카메라의 업데이트 주기와 캐릭터의 물리연산 주기가 어긋나면서 일어나는 경우가 대표적인 지터링 현상 중 하나입니다. 지터링현상을 그대로 놔두면 게임을 플레이하는 플레이어 입장에서는 게임플레이 시 이질감과 불편함을 감수해야하기 때문에 우리 개발자들은 이 현상을 해결해야합니다. 유니티에서는 이 문제를 어떻게 해결할까? 시네머신이 카메라를 조작할 수 있게하는 컴포넌트인 시네머신 브레인의 프로퍼티들을 보면,Update Method항목과 Blend Update Method항목이 있..

[C#] 프로그래밍과 C#🤓

C#으로 처음 코딩을 시작하는 분들 위한 가이드입니다간단한 프로그래밍 기본배경지식과 C#을 소개하겠습니다. 프로그래밍이란?"프로그램을 제작한다"라는 뜻으로 말 그대로 프로그램을 제작하는 뜻입니다. 컴퓨터는 0과 1로 이루어져있는 2진수 명령어 집합인 기계어를 통해 연산등을 수행하는데 문제는 기계어는 사람이 해석하기 너무 복잡하다는 것입니다. 그렇게하여 나온 것이 "어셈블리어"로 어셈블리어는 기계어 명령을 기호나 단어로 바꿔 만들었습니다어셈블리어로 사람이 코드를 작성해 일종의 번역과정을 거쳐 기계어 코드로 변환되는데 이 과정을 "컴파일"이라고합니다.프로그래머가 어셈블리어로 코드를 작성하면 "컴파일러"라는 소프트웨어를 이용하여 실행파일을 만들며 이 실행파일을 우리는 프로그램이라고 부릅니다. 어셈블리어처럼 프..