분류 전체보기(158)
-
[Unity] 유니티는 왜 싱글 쓰레딩을 권장하는가?
동기 비동기 관련된 개념만 보면 비동기식 멀티 쓰레딩이 가장 좋아보인다. 하지만 유니티는 우리가 알다시피 싱글 쓰레딩을 권장한다. 왜 그러는지 의문점이 생겨 작성한 글이다.비동기식 멀티 쓰레딩 개념에 대해 정리 해놓은 부분을 다시 읽어보면 다음고 같이 적혀있다.나는 사장이고 베이컨을 굽는 직원이 있고 토스트를 굽는 직원이 있고 서빙을 담당하는 직원이 있다고 보면 된다.베이컨 주문이 10개 들어오면 팬에 베이컨을 올리고 타이머를 누르는 작업을 10번 수행하고 10개의 타이머가 순차적으로 울릴면 차례로 뒤집는 작업을 한다. 토스트를 굽는 직원도 동일한 메커니즘이다.이는 이상적인 식당의 모습이다. 그러나 실제 식당의 모습은 위처럼 흘러가지만은 않는다. 이를테면 다음과 같은 문제들이 발생할 수 있다. 1. 작..
2024.11.28 -
[C#] 동기 비동기 개념 이해하기
해당 글은 async await 키워드를 공부하기 앞서 개념을 잡고 가기 위해 작성한 글이다.동기, 비동기에 대해 알아보고 나아가 동기식 싱글 쓰레딩, 동기식 멀티 쓰레딩, 비동기식 싱글 쓰레딩, 비동기식 멀티 쓰레딩에 대해 공부해보려 한다.[동기식 비동기식]식당을 비유하여 설명하겠다.난 1인 식당을 운영하고 있다. 한 손님이 베이컨과 토스트를 주문했다. 이후 상황을 동기식과 비동기식으로 나눠보겠다.동기식 베이컨을 다 굽는다.그 다음 토스트를 다 굽는다.접시에 담는다.손님에게 서빙한다.비동기식팬에 베이컨을 올리고 타이머를 누른다.팬에 토스트를 올리고 타이머를 누른다.틈틈히 청소한다.베이컨 테이머가 울려 베이컨을 접시에 담는다.토스트 타이머가 울려 토스트를 접시에 담는다.손님에게 서빙한다.동기식은 하나 작..
2024.11.28 -
[C#] Array vs List vs ArrayList
기본 개념Array연속적인 메모리상에 동일한 타입의 요소를 일렬로 저장하는 자료 구조로서, 배열 요소는 인덱스를 사용하여 직접적으로 접근할 수 있다. 배열은 고정된 크기를 가지며, 배열의 사이즈와 상관없이 한 요소에 접근하는 시간은 인덱스를 사용할 경우 O(1)이 된다. 하지만 인덱스를 알지 못하고 정렬되지 않은 배열에서 값으로 데이터를 찾기 위해서는 O(n)의 시간이 소요된다.List배열요소가 T 타입인 generic로서 동적 배열을 지원하는 클래스이다. list클래스는 내부적으로 배열을 가지고 있으며, 동일한 타입의 데이터를 저장한다. 만약 미리 할당된 배열 크기가 부족하면 내부적으로 배열을 2배로 늘려 동적으로 배열을 확장한다. arrayList와 다르게 박싱 / 언박싱의 문제를 발생하지 않는다.A..
2024.11.12 -
[C#] Class vs Struct
[Class vs Struct]기본 개념classstruct참조 타입으로 힙(heap) 메모리에 할당된다.객체의 참조를 다루므로, 객체를 여러 변수가 공유할 수 있다.C#에서 class는 객체 지향 프로그래밍의 기본 단위로 많이 사용된다.값 타입으로, 주로 스택 메모리에 할당된다. 값 자체를 복사하여 다루므로, struct 변수를 다른 변수에 할당할 때, 별도의 독립된 복사본이 생성된다.C#에서는 작은 데이터 묶음이나 단일 데이터 처리에 주로 사용된다.메모리 할당 방식classstruct힙 메모리에 할당되며, 변수가 객체의 메모리 위치를 참조한다.가비지 컬렉터가 사용되지 않는 객체를 자동으로 해제한다.크기가 큰 데이터를 다루기에 적합하다.주로 스택에 할당되며, 변수에 실제 데이터 값이 저장된다.스택에서 ..
2024.11.06 -
[PCCP 기출문제] 2번 / 퍼즐 게임 챌린지
https://school.programmers.co.kr/learn/courses/30/lessons/340212핵심 : 이분탐색을 활용하여 검색 시간을 단축하자public class Solution{ private const int MIN_LEVEL = 1; private int _level = MIN_LEVEL; public int solution(int[] diffs, int[] times, long limit) { var end = diffs[0]; foreach (var diff in diffs) { end = end = 0 ? times[i - 1] : 0; if(diff > _level) ..
2024.10.26 -
[PCCP 기출문제] 1번 / 동영상 재생기
핵심 : 뒤로가기 혹은 앞으로가기 할때마다 오프닝 구간에 속해 있는지를 체크하라using System;public class Solution{ private const string TO_PREV = "prev"; private const string TO_NEXT = "next"; private const int MOVE_VALUE = 10; private const int ONE_MINUTE = 60; private int _posTime; public string solution(string video_len, string pos, string op_start, string op_end, string[] commands) { _posTime = Con..
2024.10.25