자료구조와 알고리즘의 역할자료구조:메모리 영역에 데이터를 잘 정리하고 저장하는 방식.데이터를 효율적으로 저장, 관리, 검색하기 위해 사용되는 논리적 구조.예를 들어, 배열, 연결 리스트, 트리, 스택, 큐 등은 메모리의 데이터를 체계적으로 관리하기 위한 자료구조이다.자료구조의 목적은 데이터 접근의 효율성을 극대화하여 프로그램이 메모리에서 데이터를 쉽게 가져오고, 수정하거나 삭제할 수 있도록 하는 것이다.알고리즘:자료구조에 저장된 데이터에 효율적으로 접근하고, 자원을 관리하여 프로그램의 성능을 올리는 방법.특정 문제를 해결하기 위해 어떤 순서로, 어떤 방식으로 데이터를 처리할지 결정하는 논리적인 절차.예를 들어, 정렬 알고리즘(버블 정렬, 퀵 정렬), 탐색 알고리즘(이진 탐색, 해시 탐색), 그래프 알고리..
전체 글
달싹이의 IT공부&기록 블로그입니다! 함께 소통하며 공부해요^^ 오늘도 1일 1지식 늘려볼까요?프로세스 개념프로그램(Program): 실행할 수 있도록 작성된 프로그래밍 코드(명령어)들의 집합, 아직 실행되지 않은 상태로 디스크에 저장된 명령어들. 사용자가 실행하면 메모리에 로드되고, 프로세스로 변환되어CPU에서 작업이 수행된다.추가로 program에는 메모리 영역 heap과 stack이 없다. 프로세스(Process): 실행중인 프로그램으로, 운영체제로부터 CPU 시간, 메모리 공간, 파일 핸들, 네트워크 연결 등의 자원을 할당받아 실제로 동작하는 상태이다. 프로세스는 프로그램의 명령어들을 실행하며, 독립된 메모리 공간을 가지고 하나 이상의 스레드를 포함할 수 있다.추가로 process는 실행시에 사용되는 개념이기 때문에 heap과 stack이 존재한다. 프로그램이 실행되면 운영체제는 해당 프..
개념CPU(Central Processing Unit, 중앙처리장치): CPU는 컴퓨터에서 가장 중요한 부품 중 하나로, '인간의 뇌'에 비유되곤 한다. 프로그램이 실행된 프로세스에서 명령어를 받아, 모든 연산과 로직을 처리하는 장치야. CPU는 메모리(RAM)로부터 데이터를 받아서 산술 연산(덧셈, 뺄셈 등), 논리 연산(비교, 조건문 등), 제어 흐름(조건 분기, 반복문) 등을 수행하며, 이 연산 결과를 다시 메모리로 돌려보내거나 출력 장치로 전달한다. 즉, CPU는 시스템의 중앙 처리 장치로서, 컴퓨터가 수행하는 모든 기본적인 연산과 제어를 담당한다. 코어(Core): CPU 내에서 명령어를 해석하고 실행하는 기본 처리 단위. CPU의 구성 요소 중 하나로, 실제 연산을 처리하는 부분이다. 프로세스..
개발자는 단순히 프로그램 코드를 작성하는 것만으로 그치지 않는다. 작성한 코드를 통해 컴퓨터에게 명령을 내리고, 그로 인해 원하는 작업을 수행하게 하는 역할을 한다.이를 위해서는, 자신이 작업을 지시하는 시스템의 모든 것을 잘 이해하고, 이를 효율적으로 활용할 수 있어야 한다. 개발자마다 사용하는 시스템 구성은 다를 수 있지만, 컴퓨터 구조, 운영체제, 네트워크와 같은 공통된 기술적 기반 위에서 시스템을 다루는 것이다. 각 시스템에서 사용하는 하드웨어(HW)와 소프트웨어(SW)에 따라 세부 구조와 활용 방식, 그리고 성능은 다를 수 있지만, 근본적인 원리는 동일하다. 따라서 개발자는 단순히 프로그래밍 언어를 다루는 것을 넘어서, 시스템 내부의 구조와 동작 원리를 깊이 이해해야 한다. 단순히 코딩만 할 줄..
게임 단일 스레드로 처리하면게임에서는 렌더링, 물리 계산, AI, 캐릭터 움직임, 배경음악 재생, 마우스 입력 처리, 등 많은 작업들이 실시간으로 동시에 처리되는 일이 빈번하다. 이러한 작업들을 한 스레드에서 모두 직렬 방식으로 처리하게 된다면, CPU는 시분할 기법을 사용하여 작업을 분배시키는데, 작업 전환 오버헤드가 발생해 멀티스레딩을 이용한 병렬 처리보다 더 버벅거리고 응답성이 떨어질 수 있다. 특히 게임 진행 중에 I/O 작업들도 추가적으로 빈번히 발생하게 되는데, 이때 CPU가 작업 처리 방식 중 기존 작업이 대기시간에 빠지는 I/O 대기시간이 생기게 되어 더더욱 작업 처리가 지연되고 게임이 느려지며 끊기는 상황이 발생한다.게임이 실행되면서 한 스레드에서 처리해야 할 작업들이 많은 게임일수록 C..

앞으로 공부를 하면서 다시보기 위해 기록을 할 예정이다.엔진 비교언리얼언리얼 4(2012) → 언리얼 5가 나오기까지 10년정도 사용됨언리얼 5(2022) → 언리얼 6가 나오기 전 까지 약 10년정도 사용하지 않을까?언리얼 5와 4는 10년 차이인 만큼 UI도 그렇고 많이 바뀌었다.언리얼 4를 모르고 언리얼 5만 공부하면 익히기 힘들 수 있으니 간간히 참고하면 좋다.유니티2019가 공부할 자료가 좀 많다.2022 LTS버전을 제일 많이 활용중연도별로 큰 변화가 없어서 2019 버전으로 공부해도 어느정도 문제가 없다.대신 개발에선 시작 시 팀끼리 엔진의 버전을 똑같이 정하고 시작해야 하며, 중간에 다른 버전으로 바꾸면 많은 오류가 발생할 수 있으니 버전을 동일하게 끝까지 가져가야 한다. 특히 게임이 출..

집에서 데스크탑을 활용하면 성능 문제가 거의 없었지만... 외장 그래픽 카드가 달린 노트북일지라도 게이밍 노트북이 아니면 성능이 그렇게 뛰어나진 않기 때문에특히 언리얼엔진은 그래픽카드 리소스를 많이 잡아먹어 내 노트북에 맞게 엔진 최적화를 할 필요가 있었다.문제 발생물론 그 이유는 알고싶지 않았는데...언리얼5 엔진으로 프로젝트를 시작하는 순간 버벅거리며 다음과 같이 문제가 발생하였다 ㅠㅠ말 그대로 내 그래픽카드 성능과 VRAM 때문에 이 엔진의 수 많은 고성능 기능들을 견딜 수 없기 때문이다.여기서 "Over budget"은 GPU 메모리 사용량이 초과되었다는 의미이다...아, 참고로 내 노트북의 그래픽카드는 Geforce MX250이다.GPU 문제로 이런 알림창이 뜨며 엔진은 꺼졌다... ㅠㅠ문제 해..

※ 나동빈 저자의 '이것이 취업을 위한 코딩 테스트다 with 파이썬 '를 참고하여 정리한 글입니다. 사실 직접 시간 복잡도와 공간 복잡도를 실제로 측정하는 것은 처음 글에서 때에 따라 유용하게 쓰이지만 대부분은 빅오 표기법(Big-O Notation)을 사용하여 다루지 않겠다고 하였지만 잠깐 소개하고 넘어 가겠다. 실제로 측정하는 방법은 주로 검증을 위해 쓰이는데 우리가 처음 알고리즘을 공부한다면 너무 빅오 표기법에만 의존하지 말고 정말 내가 계산한 빅오 표기법의 성능과 일치 하는지 검증을 위해 테스트 해 보면 좋다.아마 이 과정을 통해서 더 알고리즘 성능 측정을 능숙하게 할 수 있게 될 것이며, 자신의 필요에 따라 구현하고 측정하는 개발자의 능력 또한 성장할 수 있을 것이다. 보통 어떤 알고리즘을 설..