반응형

**극꼼이네 GGTales** 307

[프로그래머스] C# 문제풀이 28. 스택/큐 - 프린터

https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 문제 설명) 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다. 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. ..

[프로그래머스] C# 문제풀이 27. 해시 - 베스트앨범

https://programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 문제 설명) 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 ..

[C#] 오버라이딩과 오버로딩

오버라이딩(Overriding) : 상위 클래스의 메서드를 하위 클래스가 재정의해서 사용하는 것. 오버로딩(Overloading) : 같은 메서드 이름으로 매개변수에 차이를 두는 것. * 예시) 1) 오버라이딩 abstract public class Parent { public string name; public int attack; abstract public void InputInfo(); } class Children : Parent { override public void InputInfo() { name = "jj"; attack = 10; } } class Call { static void Main(string[] args) { Children ch = new Children(); ch.Inp..

[Unity]/[C#] 2022.05.22

[C#] delegate와 event의 차이

1. delegate 2. event 3. delegate와 event의 차이점 1. delegate : delegate는 하나의 형식(type)으로, 메서드에 대한 참조입니다. delegate는 인스턴스 메서드, 정적메서드 모두 참조 가능합니다. delegate는 값이 아닌 '코드' 자체를 넘기고 싶을 때 사용할 수 있고, 사용 예시는 아래와 같습니다. delegate int Compare(int number1, int number2); static int AscendCompare(int number1, int number2) { if (number1 > number2) return 1; else if (number1 == number2) return 0; else return -1; } static ..

[Unity]/[C#] 2022.05.18

[디자인패턴] 팩토리 메서드 패턴(Factory Method Pattern)

1. 팩토리 메서드 패턴이란? 2. 팩토리 메서드 패턴의 장단점 3. 팩토리 메서드 패턴 예시 코드 1. 팩토리 메서드 패턴이란? : 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지 서브클래스에서 결정하는 것입니다. 동일한 인터페이스를 준수하는 클래스들을 생성하는 것이 목적입니다. * 구조 Product Creator Product Creator Concrete ConcreteProduct ConcreteCreator - Product : 팩토리 메서드로 생성될 공용 객체. 주로 추상 클래스 또는 인터페이스 - ConcreteProduct : Product를 상속받는 객체 - Creator : Product가 구현하는 메서드가 존재. 주로 추상 클래스 또는 인터페이스 - C..

[C#] 구조체(struct)

1. 구조체란? 2. 구조체 구현 예시 3. 구조체와 클래스의 차이 1. 구조체란? : 사용자 정의 데이터로, 값 형식입니다. 구조체를 정의하려면 struct 문을 사용합니다. *구조체의 특징 (C#에서의 구조체는 C/C++의 구조체와 다른 점이 존재) - 메서드, 필드, 속성 등을 가질 수 있습니다. - 구조체는 다른 클래스를 상속받을 수 없습니다. - 값 타입의 데이터로, new를 선언할 필요 없이 바로 사용 가능합니다. 2. 구조체 구현 예시 struct Student { public string name; public int age; public Student(string _name, int _age) { name = _name; age = _age; } }; public class MyStruc..

[Unity]/[C#] 2022.05.16

[C#] 인터페이스

1. 인터페이스란? 2. 인터페이스의 특징 3. 인터페이스와 추상클래스의 차이점 1. 인터페이스란? : 상속관계에 있어야 하는 클래스입니다. 모든 구현은 하위 클래스에서 이루어지며, 추상클래스와 유사하지만 다중상속이 가능하다는 점에서 차이점이 있습니다. C# 클래스가 인터페이스를 갖는 경우, 인터페이스의 모든 멤버에 대한 구현을 제공해야 합니다. 2. 인터페이스의 특징 - 구현이 없고, 형식만 포함합니다. 모든 구현은 하위에서 이루어집니다. - 다중 상속이 가능하다는 점에서 추상클래스와 차이가 있습니다. - 상속만 가능하고 new 키워드를 써 인스턴스로 생성하는 것은 불가능합니다. - 이벤트, 인덱서, 메서드, 속성을 포함합니다. 특히 메서드 부분을 많이 이용합니다. - 접근한정자를 명시하지 않아도 기본..

[Unity]/[C#] 2022.05.15

[디자인패턴] 싱글톤 패턴(Singleton Pattern)

1. 싱글톤 패턴이란? 2. 싱글톤 패턴의 장단점 3. 싱글톤 패턴 예시 코드 1. 싱글톤 패턴(Singleton Pattern)이란? : 해당 클래스의 인스턴스가 하나만 생성되게 하고, 어디서든 그 인스턴스에 접근할 수 있도록 하는 패턴입니다. 주로 시스템 자원이나 정보를 관리하는 용도로 사용합니다. 2. 싱글톤 패턴의 장단점 * 장점 : 모든 데이터를 전역으로 관리하기 때문에 쉽게 접근할 수 있고, 초기 객체를 생성하게 되면 정적 메모리에 올라가기 때문에 호출이 빠릅니다. 중복 생성과 메모리 낭비를 방지할 수 있습니다. * 단점 : 정적 메모리(static)에 할당된 객체이기 때문에 메모리 크기가 제한적이라 너무 큰 메모리가 쌓이게 될 경우 프로그램의 성능이 낮아집니다. 하나의 정적 메모리를 사용하기..

[C#] 메모리(+ 가비지)

1. C# 메모리 구조 2. C# 메모리 관리 1. C# 메모리 구조 메모리의 영역에는 4가지가 있습니다. Stack 영역 지역 변수, 매개 변수를 저장. 컴파일 시점에 크기를 할당하는 정적 할당을 사용 Heap 영역 사용자 관리 영역. 사용자 정의에 의해 할당된 메모리를 저장하거나 해제하는 동적 할당을 사용 Data 영역 전역 변수, static 변수를 저장. 컴파일 시점에 크기 할당. Code 영역 소스 코드, 기계어로 제어되는 메모리 영역. 크게 스택 영역과 힙 영역으로 나뉘는데요, 스택영역은 관리되지 않는 공간, 힙영역은 관리가 되는 공간입니다. * 관리 = 사용하지 않는 메모리를 스스로 해제하고, 다른 메모리가 올라갈 수 있게 하는 것. 이때, 메모리를 정리하는 일을 하는 것이 가비지 컬렉터입니..

[Unity]/[C#] 2022.05.13

[Unity] 입사각, 반사각을 구하는 방법

입사각, 반사각을 구하는 방법을 알아보겠습니다. //입사벡터 Vector2 incidentVector; //충돌할 면의 벡터 Vector2 collisionVector; //충돌한 면의 벡터를 각도로 변환 float collisionAngle = Mathf.Atan2(collisionVector.y, collisionVector.x) * 180f / Mathf.PI; //입사벡터를 각도로 변환 flot incidentAngle = Vector3.SignedAngle(collisionVector, incidentVector, -Vector3.forward); //반사할 벡터의 각도를 구함(충돌한 면의 벡터 기준) float reflectAngle = incidentAngle - 180 + collision..

[Unity]/[Unity] 2022.05.11
반응형