비트를 쪼개는 개발자

allen321@naver.com

분류 전체보기 82

Unity [디자인 패턴] - 싱글톤 패턴

싱글톤 패턴이란?  싱글톤 패턴은 특정 클래스의 인스턴스가 프로그램 전체에서 오직 하나만 존재하도록 만드는 디자인 패턴이다. 해당 인스턴스를 호출하면 매번 새로운 인스턴스를 생성하는 것이 아니라 기존에 생성한 인스턴스를 반환한다. 기존의 인스턴스를 재사용하기 때문에 메모리를 절약할 수 있지만 너무 많은 인스턴스를 싱글톤으로 만들면 스태틱 메모리에 너무 많은 인스턴스가 할당되어 있게 된다. Singleton 객체에는 어디서나 static 변수로 참조값을 할당해서 모든 객체에서 쉽게 접근이 가능하도록 구현한다. 씬과 씬 사이에 데이터를 공유하는 용도로도 사용함(DontDestroyOnLoad 함수 사용)    싱글톤이 필요한 경우   1. 많은 클래스에서 해당 클래스를 수시로 공유하는 경우   유니티에서는 ..

Unity 2024.08.07

Unity [디자인 패턴] - 디자인 패턴이란?

디자인 패턴(Design Pattern) 이란?   디자인 패턴은 특정 기능을 구현하기 위한 접근 방식이나 코드의 구조를 정의한 개념이다. 코딩 테스트를 풀다 보면 다양한 알고리즘을 이용해서 문제를 해결하는데, 알고리즘이 해답을 얻기 위한 효율적인 풀이 과정을 의미한다면 디자인 패턴은 과정 보다는 효율적인 구조 자체를 뜻한다. 디자인 패턴을 이용하면 코드의 재사용성이 높아지는 것 역시 디자인 패턴의 장점이다. 좋은 소프트웨어 구조를 설계할 때 중요한 모듈화와 추상화 역시 디자인 패턴을 통해 쉽게 구현할 수 있다. 디자인 패턴이 필요한 순간은?  유니티에서 디자인 패턴을 이용하는 경우는 크게 다음과 같다.  메모리 사용을 최소화 해야 하는 경우, 게임 성능 최적화가 필요한 경우게임 출시 이후 컨텐츠 추가와..

Unity 2024.08.07

C# [프로그래머스] Lv.2 택배 상자

문제 설명  컨베이어 벨트에서 택배를 확인하고 트럭에 순서대로 싣는 문제다. 고려해야 할 점은 택배는 반드시 기사님이 알려준 순서대로, 즉 order와 같은 순서로 트럭에 올라가야 한다. order[] 배열은 컨베이어 벨트에서 몰려오는 택배의 순서이고 해당 택배를 트럭에 싣는게 불가능 하다면 보조 컨테이너를 이용해서 잠시 배치할수 있다. 보조 컨테이너는 입구 이외에는 다른 면이 모두 막혀있는 구조이기 때문에 가장 마지막에 보관한 상자부터 꺼낼 수 있다. 이러한 상황에서 몰려오는 택배 상자를 최대 몇개까지 트럭에 넣을 수 있는지를 구하는것이 이번 문제의 답이다.     풀이 과정 우선 택배 상자를 순서대로 확인하는 작업을 하는 반복문을 만들었다.반복문의 과정 중 i번째의 상자가 트럭에 바로 넣을 수 없는 ..

코딩테스트 2024.08.06

C# [프로그래머스] Lv.2 귤 고르기

이번 문제의 핵심은 간단하다.  경화가 고르고 싶은 귤의 갯수가 k이고 tangerine[] 배열이 각각의 크기의 귤의 종류이다.귤을 각각의 크기별로 갯수를 센다.모든 귤을 Count 한 후에 많은 순서대로 내림차순 배치한다. (귤의 크기는 여기서 중요치 않다.)많은 수의 귤 부터 귤을 다시 Count한다.반복문을 돌리다가 귤의 갯수가 k보다 크거나 같아지면 종료한다.몇 종류의 귤을 count 했는지 return한다.  public int solution(int k, int[] tangerine) { // 귤의 크기별로 개수를 세기 위해 Dictionary 사용 Dictionary countDict = new Dictionary(); for (int i = 0; i counts =..

코딩테스트 2024.08.02

통신 - HTTP와 HTTPS

HTTP란?    HTTP(HyperText Transfer Protocol)는 월드 와이드 웹(WWW)*에서 서버와 클라이언트 간에 정보를 주고 받을 때 사용되는 하이퍼텍스트를 교환하기 위한 통신 규약 프로토콜이다. 즉 HTTP는 웹 브라우저가 웹 서버에서 데이터를 가져오고, 이를 사용자에게 표시하는 역할을 수행하며 주로 80번 포트 번호를 사용하여 해당 요청들을 수행한다.  WWW는 웹 페이지, 웹 브라우저, 웹 서버, URL 등으로 이루어진 웹 브라우저를 통해 접근하는  하이퍼 텍스트 문서의 집합이다.   HTTP의 통신 방식  클라이언트(Client):역할 : 1. 클라이언트는 서버에 요청(Request)을 보낸다.2. 웹 브라우저가 대표적인 클라이언트의 하나이다. 3. 사용자가 웹 브라우저에 U..

통신 2024.08.01

C# [프로그래머스] Lv.2 카펫

문제 설명      제한 사항 및 입출력 예    프로그래머스의 완전 탐색 계열 문제로 카페트의 색깔을 바탕으로 내부 색깔의 갯수와 외부 색깔의 갯수에 따라 카페트의 크기가 얼마나 되는지 return 해야 하는 문제이다. 그래프의 알고리즘 중 하나인 깊이 우선 탐색(DFS)를 이용해 완전 탐색을 진행하고 다음 분기로 넘어가는 방식으로 코드를 작성했다.  public class Solution { // 깊이 우선 탐색(DFS) 메서드 정의 public void dfs(int height, int brown, int yellow, int[] arr) { // height가 노란색 격자 양옆을 감싸는 갈색 격자의 수. 초기화 값은 2, 재귀할 때마다 2씩 추가 int..

코딩테스트 2024.07.31

통신 - TCP/IP와 UDP

네트워크 통신의 기본 개념 지난 글에 언급한 내용처럼 네트워크 통신은 데이터 패킷을 통해 한 장치에서 다른 장치로 정보를 전송하는 과정이다. 이를 위해 여러가지 프로토콜이 사용되며, 특히 TCP/IP와 UDP는 인터넷에서 가장 널리 사용되는 프로토콜이다.  TCP/IP  TCP/IP는 인터넷과 같은 네트워크에서 데이터를 전송하기 위해 사용되는 프로토콜 스택으로 하나의 프로토콜이 아니라 TCP(Transmission Control Protocol)와 IP(Internet Protocol)를 합쳐서 부르는 말이다.     그렇다면 TCP (Transmission Control Protocol) 란 ? TCP는 전송 조절 프로토콜로 네트워크 상에서 데이터를 신뢰성 있게 전송하는 데 사용한다.TCP는 IP 위에..

통신 2024.07.29

Unity - 물리 엔진(RigidBody, Collider)

Unity에서 처리해주는 물리 엔진의 주요 기능은 다음과 같다. 오브젝트와 오브젝트간의 충돌 처리오브젝트의 중력 적용힘에 대한 가속 처리마찰력과 반발력에 따른 오브젝트 움직임 처리    또한 Unity의 물리 엔진들의 종류는 프로젝트에 따라 크게 두가지로 나뉜다.   1.  오브젝트 지향 프로젝트  Nvidia PhysX 3D 물리엔진 : Unity에서 기본적으로 제공하는 3D 물리 엔진으로, Nvidia의 PhysX 엔진을 사용한다.  특징 충돌 감지와 반응 및 시뮬레이션을 위한 여러 물리특성 지원다양한 플랫폼에서 사용이 가능함유니티 에디터에 통합되어 있어 사용이 간편함자주 사용하는 RigidBody와 Collider가 여기에 속해 있음   Box2D 물리 엔진 : 물리 시뮬레이션을 위해 Unity에서..

Unity 2024.07.22