비트를 쪼개는 개발자

allen321@naver.com

2024/07 7

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

C# - 인터페이스(Interface)

인터페이스 란(Interface)?   인터페이스는 언뜻 보면 클래스와 상당히 유사해 보이지만 인터페이스 내부에서는 구현이 불가능하다.   메서드나 속성의 선언 및 정의는 가능하지만 멤버들에 대한 구현은 이를 제공하는 클래스 및 구조체에서 행해야 한다. 인터페이스의 특징들은 다음과 같다.     인터페이스의 특징  오직 메서드와 속성의 선언만 가능하다. 각 속성들의 실제 구현은 상속받은 클래스가 인터페이스의 정의된 모든 속성을 구현해야 한다. 다중 상속이 가능하다. 따라서 한 클래스가 여러 인터페이스를 구현할 수 있다. 다양한 클래스에서 동일한 인터페이스를 사용한다면 메서드와 속성을 일관화 할 수 있어 코드의 일관성이 보장된다. 추상화에 용이하다, 즉 인터페이스를 통하기 때문에 세부적인 클래스의 구현을 ..

C# 2024.07.19

게임수학 - 벡터

벡터란 ?   벡터는 물리학과 수학에서 자주 사용하는 용어이다. 벡터는 "크기"와 "방향", 두가지를 가지는 양을 의미한다. (바람의 세기, 플레이어의 이동 방향과 속도 등) 차원에 따라 벡터는 다르게 정의된다.   벡터의 특징  벡터간에는 덧셈과 뺄셈이 가능하다.void Start(){ Vector3 a = new Vector3(3, 4, 0); Vector3 b = new Vector3(-2, 2, 0); Vector3 r1 = a + b; Vector3 r2 = a - b; Debug.Log("r1 : " + r1); Debug.Log("r2 : " + r2);}        Magnitude(벡터의 크기)와 distance(벡터간의 거리) 는 벡터를 뺄셈하거나 피타고라스 정리를 이용해 빗변의 길이..

게임수학 2024.07.16

게임수학 - 삼각함수

삼각비와 삼각함수  삼각비란? 직각삼각형에서 각도와 변의 길이 사이의 관계를 나타내는 말. 삼각비는 사인(sin), 코사인(cos), 탄젠트(tan)의 세 가지 기본적인 함수(삼각함수)로 표현함. 값을 모르는 특정 각을 표현함(각도)를 "세타(θ)" 로 표현함   삼각함수란?  삼각함수는 각도와 관련된 함수로, 주로 직각삼각형의 변의 비율을 설명하는 데 사용함. 특정 값을 입력하면 삼각비의 결과를 반환하는 함수라고 볼 수 있음.   사인 (sin): 직각삼각형에서 주어진 각 θ를 반대변의 길이를 빗변의 길이로 나눈 비율 (높이 / 빗변)​코사인 (cos): 직각삼각형에서 주어진 각 θ의 인접변의 길이를 빗변의 길이로 나눈 비율 (밑변 / 빗변)​탄젠트 (tan): 직각삼각형에서 주어진 각 θ의 반대변의 ..

게임수학 2024.07.15

C# - 라이브러리 vs 프레임워크

프레임워크(Framework) 란?    프레임워크는 말 그대로 개발자가 코드를 개발하는데에 있어서 시간을 단축하기 위해 미리 만들어 놓은 뼈대나 구조와 같이 코드나 클래스를 모아둔 프레임을 이용하고 이를 사용하는 것이다. 프레임워크는 대부분 개발자가 따라야 하는 가이드를 제공하고 일관된 개발 패턴을 유지시킨다. 미리 만들어 둔 프레임워크를 사용하면 특정 부분만 개발자가 원하는 대로 채워 사용하기 때문에 코드의 재사용성이 늘어나고 개발 시간이 크게 줄어든다는 장점이 있다. 유지 보수가 용이하지만 프레임워크에 너무 의존한다면 해당 기능 개발에 있어서 스스로 개발하는데 어려워지기도 한다. C#에서의 사용하는 프레임워크의 예시로는 .Net FrameWork, .NET Core 등이 있다.   라이브러리(Lib..

C# 2024.07.11