분류 전체보기 291

Reflection

목차1. Reflection이란 ? 1) 개념 리플렉션(Reflection)은 '거울에 비친다'는 뜻을 담고 있다. 이를 코딩에서 적용하자면 프로그램이 실행중인 상황, 즉 런타임에 자신의 메타데이터를 거울로 보듯 들여다 본다는 뜻이다. 동적으로 객체 내부 구조를 검사하고, 조작할 수 있게 하는 개념이다. 2) 원리컴파일된 DC# 프로그램 (DLL 파일 등)에는 메타데이터가 기록되어 있다. 리플랙션은 System.Reflection 네임스페이스에 있는 클래스들 (FieldInfo, MethodInfo 등) 을 사용해 메타 데이터를 스캔한다.추가적으로 메타데이터를 기반으로 Private과 같은 변수/함수들도 값을 바꾸거나 특정 함수를 강제로 실행시킬 수 있다.아래는 간단한 예시다. Type targetTy..

개념공부 2026.03.26

Attribute

목차 1. Attribute란 ? Attribute에 대해 알기 위해선 우선 '메타 데이터'라는 개념에 대해 알아야 한다. 메타데이터란 '데이터를 설명하는 데이터'를 뜻한다. 우리가 스마트폰으로 사진을 찍으면 사진(이미지 데이터) 파일 안에 촬영 날짜, 위치, 카메라 기종 같은 정보가 몰래 숨어있는데, 이것이 바로 메타데이터다. C# 프로그래밍에서는 코드를 컴파일 할 때, 클래스명은 무엇인지, 어떤 변수와 함수를 가졌는지 등의 구조 정보를 전부 모아서 DLL 파일 안에 기록해둔다. 전 포스팅에서 다뤘던 'Type(설계도)' 정보 자체가 C# 프로그래밍의 가장 기본적인 메타데이터인 것이다. AttributeAttribute는 이렇게 기본적으로 생성되는 메타데이터 이외에 개발자가 추가로 붙이는 포..

카테고리 없음 2026.03.26

C# Type (0327 수정)

목차 Reflection과 Attribue를 공부하다가 이것저것 더 알아보게 되었다. 1. Type이란? 게임에서 몬스터를 만든다고 가정해 보자. 우리는 다음과 같은 코드로 몬스터를 만든다.Monster A = new Monster();이때 생성된 A는 메모리 공간을 차지하고 살아 숨 쉬는 '객체(Instance)'이다. 그렇다면 이 객체를 만들어내기 위한 설계도(Type)란 정확히 무엇일까?① 모든 것은 '메타데이터(Metadata)'로 기록된다 C#에서 코드를 작성하고 컴파일(빌드)을 하면, 컴퓨터는 소스 코드를 기계어로 번역함과 동시에 메타데이터(Metadata)'라는 거대한 정보 사전을 만들어낸다. 이 메타데이터 안에는 프로그램에 존재하는 모든 클래스, 구조체, 인터페이스, 열거형(Enum) ..

개념공부 2026.03.26

C# 프로퍼티(Property)

목차 프로퍼티는 외부에서는 일반 '변수(Field)'처럼 보이지만, 실제로는 내부적으로 '메서드(접근자)'처럼 동작하는 C#의 강력한 기능입니다. 데이터의 안전을 지키면서도 사용의 편의성을 제공하는 '똑똑한 변수'라고 할 수 있습니다.1. 일반 변수(Field)의 한계보통 유니티에서 변수를 선언할 때 다음과 같이 작성하는 경우가 많습니다.// 일반적인 필드(Field) 방식public float speed;이렇게 변수를 public으로 열어두면, 외부의 다른 클래스에서 이 변수에 접근해 값을 마음대로 오염(잘못된 값 대입)시킬 수 있는 치명적인 위험이 존재합니다. 프로퍼티는 이 문제를 해결하기 위해 읽기 권한은 열어두되, 수정 권한은 닫거나 제어하는 방식을 사용합니다.2. 자동 구현 프로퍼티와 접근 제..

개념공부 2026.03.14

Delegate,Action,Event,UnityEvent

목차 최근 Action을 사용하면서 다음과 같은 문제가 있었다. public Action myActionpublic void Start(){ myAction += () =>{Debug.Log("Hello")}; myAction += PrintHello}public void PrintHello(){ Debug.Log("Hello");} 위와 같은 두 방식이 있을 때, 람다식으로 만든 방식은 더 간단할 수 있어도 나중에 구독해제가 되지 않아 문제가 발생한다는 것이다. 그래서 이왕 문제를 발견한 김에 대리자, Action 등의 개념을 다시 잡고자 했다. 1. 대리자 일반적인 변수는 int , string, char 등의 데이터를 담는다. 하지만 '변수'를 담는 것이 필요하다고 생각해 생긴 것이 대리자이..

개념공부 2026.03.04

9082번 지뢰찾기

코딩테스트 : 9082번 지뢰찾기지뢰찾기 시간 제한메모리 제한제출정답맞힌 사람정답 비율1 초128 MB167379863052.066%문제지뢰찾기 게임은 2×N 배열에 숨겨져 있는 지뢰를 찾는 게임이다. 지뢰 주위에 쓰여 있는 숫자들로 지뢰를 찾을 수 있는데, 한 블록에 쓰여진 숫자는 그 블록 주위에 지뢰가 몇 개 있는지를 나타낸다. 지뢰가 확실히 있는 위치를 *, 숨겨진 블록을 #으로 표시한다. 첫째 줄에는 숫자만 나타나고 둘째 줄에는 *와 #만 나타나는데, 지뢰는 둘째 줄에만 있다.12110##*##위의 그림 2×5 배열에는 지뢰가 2개가 있다는 것을 알 수 있다. 숨겨진 블록 중 첫 번째 블록에 지뢰가 숨겨져 있고, 나머지 하나는 두 번째 줄의 가운데에 있다.2×N 배열이 주어지면 주어진 배열에 있는..

17837번 새로운 게임 2

코딩테스트 : 17837번 새로운 게임 2새로운 게임 2 성공 시간 제한메모리 제한제출정답맞힌 사람정답 비율0.5 초512 MB169608547544148.615%문제재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하나의 말 위에 다른 말을 올릴 수 있다. 체스판의 각 칸은 흰색, 빨간색, 파란색 중 하나로 색칠되어있다.게임은 체스판 위에 말 K개를 놓고 시작한다. 말은 1번부터 K번까지 번호가 매겨져 있고, 이동 방향도 미리 정해져 있다. 이동 방향은 위, 아래, 왼쪽, 오른쪽 4가지 중 하나이다.턴 한 번은 1번 말부터 K번 말까지 순서대로 이동시키는 것이다. 한 ..

17144번 미세먼지 안녕!

코딩테스트 : 17144번 미세먼지 안녕!문제미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사과는 뛰어난 코딩 실력을 이용해 각 칸 (r, c)에 있는 미세먼지의 양을 실시간으로 모니터링하는 시스템을 개발했다. (r, c)는 r행 c열을 의미한다.공기청정기는 항상 1번 열에 설치되어 있고, 크기는 두 행을 차지한다. 공기청정기가 설치되어 있지 않은 칸에는 미세먼지가 있고, (r, c)에 있는 미세먼지의 양은 Ar,c이다.1초 동안 아래 적힌 일이 순서대로 일어난다.미세먼지가 확산된다. 확산은 미세먼지가 있는 모든 칸에서 동시에 일어난다.(r, c)에 있는 미세먼지는 인..

145000번 테트로미노

코딩테스트 : 145000번 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다.정사각형은 서로 겹치면 안 된다.도형은 모두 연결되어 있어야 한다.정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다.정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다.아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누어져 있으며, 각각의 칸에는 정수가 하나 쓰여 있다.테트로미노 하나를 적절히 놓아서 테트로미노가 놓인 칸에 쓰여 있는 수들의 합을 최대로 하는 프로그램을 작성하시오.테트로미노는 반드시 한 정사각형이 정확히 하나의 칸을 포함..