본문 바로가기

분류 전체보기136

카운트다운 (C#) 📌프로그래머스 181899💡풀이제한사항에 start >= end 라는 점start ~ end까지(포함) 1씩 작아지는 점start - end + 1개의 원소가 있고 start - end 까지 반복문을 돌면 해결public int[] 카운트다운(int start, int end_num){ int[] answer = new int[start - end_num + 1]; for(int i = 0; i 2024. 5. 20.
n개 간격의 원소들 (C#) 📌 프로그래머스 181888 갑자기 난이도가 확 줄었는데 아무래도 기본기가 많이 부족하다고 판단되어낮은 레벨부터 안 풀린 모든 문제를 풀면서 진행하려고 한다. 💡풀이List를 만든다.n번째 원소는 for문에서 i % n == 0 과 같다.해당 원소를 List에 추가한다.public int[] n개간격의원소들(int[] num_list, int n){ List list = new List(); for (int i = 0; i  List를 만들지 않고 int 배열을 만드는 방법도 있었으나최대한 빨리 푸는 것에 초점을 맞춰서 바로 생각나는 방법으로 풀었다. int 배열을 만들어 해결하는 방법public int[] n개간격의원소들(int[] num_list, int n){ int[] answ.. 2024. 5. 20.
선형 탐색 (C#) 📌 선형 탐색(Linear Search) 란?선형 탐색(Linear Search)이란 배열이나 리스트와 같은 데이터 구조에서, 원하는 값을 찾기 위해 처음부터 끝까지 차례대로 검사하는 가장 기본적인 탐색 알고리즘이다. 선형 탐색은 정렬되지 않은 데이터에서도 사용할 수 있으며, 구현이 매우 간단하다. 말 그대로 처음부터 끝까지 하나씩 검사하는 방식이다.정렬이 안 되어도 사용이 가능하다.시간 복잡도는 O(n)이다.구현 코드// 인덱스를 찾아주는 선형탐색static int LinearSearch(int[] arr, int target){ // arr 원소 하나씩 확인 해 target과 일치하면 index를 반환 for (int i = 0; i static void Main(){ int[] a.. 2024. 5. 19.
선택정렬 (C#) 📌선택(Selection Sort) 란?선택 정렬(Selection Sort)은 배열에서 최소값(또는 최대값)을 선택해서 맨 앞(또는 맨 뒤)으로 이동시키는 과정을 반복하여 전체 배열을 정렬하는 방식이다. 버블정렬때와 마찬가지로 오름차 순으로 다음 배열을 정렬해보자 선택 정렬은 다음과 같이 정렬된다. 첫 사이클을 돈 후, 배열에서 가장 작은값이 맨 앞으로 오게된다. 배열의 크기가 n일 때, i = 0, i i + 1 번 원소부터 마지막 원소 크기까지 비교하기 때문에 j = i + 1, j i == 정렬할 원소, j == 비교할 원소비교하는 원소들 중 가장 작은 값을 찾아야하므로 해당 인덱스를 저장할 int index를 따로 만들어 둔다.public void SelectionSort(int[] arr){.. 2024. 5. 19.
버블정렬 (C#) 📌 버블정렬 (Bubble Sort) 란?버블 정렬은 인접한 두 원소를 비교하여 큰 원소를 뒤로 보내는 방식으로 정렬하는 알고리즘이다. 이 과정을 배열의 모든 원소에 대해 반복하며, 가장 큰 원소부터 차례대로 배열의 끝으로 이동하게 된다. 버블 정렬은 구현이 간단하지만, 평균 및 최악의 경우 시간 복잡도가 O(n^2)으로 비효율적이다. 비효율적이라고 써놓긴 했지만 기초 알고리즘이므로 알고리즘 이해를 위해반드시 공부해야 하니 진행해 보도록 하자! 다음과 같은 배열이 있다고 할 때 오름차순으로 정렬을 해보자. 버블 정렬은 다음과 같이 이루어진다. 위처럼 첫 사이클에서 원소가 n개의 배열일 때 0 ~ n-1 번째 원소와 인접한 원소를 비교해 정렬을 한다.이때, 오름차순 기준 한 사이클을 돌면 배열에서 가장 .. 2024. 5. 19.
[1일 1 구현] PoolManager - 2 📌PoolManager 구현 코드 public class PoolManager : MonoBehaviour{ public static PoolManager Instance; private Dictionary _pools = new Dictionary(); private void Awake() { if (Instance == null) { Instance = this; DontDestroyOnLoad(gameObject); } else Destroy(gameObject); } public GameObject GetFromPool(GameObject origi.. 2024. 5. 18.
[1일 1 구현] PoolManager - 1 📌오브젝트 풀링게임에선 거의 필수라고 보는 최적화 기법 중 하나...개인적으로 할 땐 많이 사용해 봤는데 생각해 보니 캠프 중에 직접 구현해서 사용해 본 적이... 없는 것 같았다. 그래서 구현해보는 오브젝트 풀링 준비물TestPrefabRandomSpawner.csTestSpawnObject.cs 📌풀링 적용 전무작정 테스트프리팹을spawnDelay초가 지난 뒤 countPerSpawn 수만큼 spawnOffset 크기의 구 안에 랜덤 생성 후 1초 뒤 파괴한다.0.05초에 20개씩 생성, 각 오브젝트는 1초마다 파괴를 반복해보자 이런 느낌인데 before after 느낌으로 극적인 세팅을 해보자0.01초에 100개 생성  프레임저하 + GC 둘 다 확연히 늘었다  그렇다면 이제 ObjectPool.. 2024. 5. 16.
[1일 1 구현] 코드 정리 및 공통 클래스 UI_Base 정리FindChild 메서드는 공용으로 쓰일 수 있으니 Util 전역 클래스를 생성해 이전Bind, Get 메서드를 쓸 때 타입 특화 메서드로 가독성과 사용성을 높였다.enum은 UI_Base에서는 쓰지 않으니 삭제했다.UI_Base를 추상클래스로 만들어 상속받는 클래스에서 Init 메서드를 강제했다.public abstract class UI_Base : MonoBehaviour{ protected Dictionary _dict = new Dictionary(); protected abstract void Init(); private void Awake() { Init(); } protected void Bind(Type type) where .. 2024. 5. 15.
괄호 회전하기 (C#) 📌프로그래머스 76502💡풀이string s를 char List로 만든다.s의 길이만큼 반복검사IsCorrect 메서드에서 올바른 괄호 짝인지 확인 후 맞으면 answer++char List의 0번을 Add해 맨끝에 위치, 0번을 지워 왼쪽으로 한 칸 회전시킨다.public int 괄호회전하기(string s){ int answer = 0; List chars = new List(s); for(int i = 0; i  Stack stack을 만든다.여는 괄호와 닫는 괄호를 담은 string open, close를 만든다List 길이만큼 반복한다.chars[i] 가 여는 괄호이면 스택에 푸시chars[i] 가 닫는 괄호이면 추가 검사stack이 비어있으면 falsestack을 Peek했.. 2024. 5. 15.