전체 글 61

[Effective C#] 1장. C# 언어 요소(아이템 1~5)

아이템 1: 지역변수를 선언할 때는 var를 사용하는 것이 낫다. 지역변수의 타입을 암시적으로 선언하는 것이 좋은 이유는 C# 언어가 익명 타입을 지원하기 위해서 타입을 암시적으로 선언할 수 있는 손쉬운 방법을 제공하기 때문이다. 정확한 반환 타입을 알지 못한 채 올바르지 않은 타입을 명시적으로 지정하면 득보다 실이 많다. IQueryable 컬렉션을 IEnumerable로 강제 형변환하게 되면 IQueryProvider가 제공하는 장점을 모두 잃게 된다. var를 사용하면 개발자 입장에서는 변수의 타입과 같이 지엽적인 부분보다 변수의 의미 파악에 더 집중할 수 있다. 컴파일러 관점에서 살펴본다면 개발자가 특정 객체의 타입을 명시적으로 지정하지 않더라도 객체 생성에 문제가 있을 경우 오류를 보고할 수 있..

상태 (State)

게임 프로그래밍 패턴 7장 상태 상태 패턴은 객체의 상태에 따라 행동이 달라지는 상황에서, 상태를 객체화하여 스스로 행동할 수 있도록 하는 패턴이다. 유한상태기계(FSM : Finite State Machine)로 구현한다. 객체의 내부 상태에 따라 스스로 행동을 변경할 수 있게 허가하는 패턴으로, 이렇게 하면 객체는 마치 자신의 클래스를 바꾸는 것처럼 보입니다. (GoF의 디자인 패턴 395쪽) 플랫포머 게임에서 플레이어를 구현한다고 해보자. B 버튼을 누르면 플레이어는 점프한다. # Player.cs public class Player : MonoBehaviour { public void HandleInput() { if (Input.GetKeyDown(KeyCode.B)) { yVelocity = ..

Design Pattern 2020.11.25

(해석)ScriptableObject로 게임을 설계하는 3가지 방법

다음은 'Three ways to architect your game with ScriptableObjects' 포스팅을 해석하고 풀이한 글입니다. unity.com/how-to/architect-game-code-scriptable-objects?_ga=2.171725536.1554841006.1604417126-1616682105.1604129636 | Keep your code flexible, manageable, and easy to debug by architecting with ScriptableObjects. unity.com ScriptableObjects란 무엇인가?ScriptableObject는 serialize 가능한 Unity class로, script 인스턴스로부터 독립적인 공유..

다섯 번째 30Day Challenges - 기록(23일)

Day23 2020.11.05 - 완료 Day22 2020.11.04 - 완료 Day21 2020.11.03 - 완료 Day20 2020.11.02 - 완료 Day19 2020.11.01 - 완료 Day18 2020.10.31 - 완료 Day17 2020.10.30 - 완료 Day16 2020.10.29 - 완료 Day15 2020.10.28 - 완료 Day14 2020.10.27 - 완료 Day13 2020.10.26 - 완료 Day12 2020.10.25 - 완료 Day11 2020.10.24 - 완료 Day10 2020.10.23 - 완료 Day9 2020.10.22 - 완료 Day8 2020.10.21 - 완료 Day7 2020.10.20 - 완료 Day6 2020.10.19 - 완료 Day5 2..

30Day Challenges 2020.11.16

Data based structure - ScriptableObject

ScriptableObject ScriptableObject는 클래스 인스턴스와는 별도로 대량의 데이터를 저장하는 데 사용할 수 있는 데이터 컨테이너입니다. ScriptableObject의 주요 사용 사례는 값의 사본이 생성되는 것을 방지하여 프로젝트의 메모리 사용을 줄이는 것입니다. 이는 첨부된 MonoBehaviour 스크립트에 변경되지 않는 데이터를 저장하는 프리팹이 있는 프로젝트의 경우 유용합니다. 이러한 프리팹을 인스턴스화할 때마다 프리팹에 이 데이터의 자체 사본이 생성되는데, 이와 같은 방법을 사용하여 중복 데이터를 저장하는 대신 ScriptableObject를 이용하여 데이터를 저장한 다음 모든 프리팹의 레퍼런스를 통해 액세스할 수 있습니다. 즉, 메모리에 데이터 사본을 하나만 저장합니다. ..

10814번, 10989번

1. 10814 # 10814.py def main2(): n = int(input()) data = [] for x in range(0, n): s = input().split(' ') data.append((int(s[0]), s[1])) dataSorted = sorted(data, key = lambda x : x[0]) for d in dataSorted: print ("{0} {1}".format(d[0], d[1])) main2() Python 내장 정렬함수 sorted에 두 번째 인자 key로 lambda 함수를 넣어준다. 파라미터의 첫 번째 요소를 기준으로 정렬한다. sorted는 비교값이 같을 경우 리스트의 기존 순서를 보장한다. 2. 10989 메모리와 시간제한을 고려해야 하는 문제다..

최소값 최대값 찾기

문제 공백으로 구분된 숫자들의 문자열 str이 주어진다. str에 들어있는 숫자 중 최소값과 최대값을 찾아 이를 "최소값 최대값"형태의 문자열을 반환하는 함수, solution을 완성하라 예 str : "1 2 3 4" return : "1 4" # solution.py def main(s): spl = [int(x) for x in s.split(" ")] result = "{0} {1}".format(min(x for x in spl), max(x for x in spl)) print (result) if __name__ == "__main__": l = ["1 2 3 4", "-1 -2 -3 -4", "-1 -1"] for s in l: main(s)

세 번째 30Day Challenges - 기록 (37일)

Day37 2020.09.20 - 완료 Day36 2020.09.19 - 완료 Day35 2020.09.18 - 완료 Day34 2020.09.17 - 완료 Day33 2020.09.16 - 완료 Day32 2020.09.15 - 완료 Day31 2020.09.14 - 완료 Day30 2020.09.13 - 완료 Day29 2020.09.12 - 완료 Day28 2020.09.11 - 완료 Day27 2020.09.10 - 완료 Day26 2020.09.09 - 완료 Day25 2020.09.08 - 완료 Day24 2020.09.07 - 완료 Day23 2020.09.06 - 완료 Day22 2020.09.05 - 완료 Day21 2020.09.04 - 완료 Day20 2020.09.03 - 완료 Da..

30Day Challenges 2020.09.22

싱글턴 (Singleton)

게임 프로그래밍 패턴 6장 싱글턴 싱글턴 패턴은 클래스의 인스턴스가 하나만 유지되고, 인스턴스에 대한 전역 접근을 제공하는 패턴이다. 책에서는 싱글턴 패턴의 남용에 대해 주의할 것을 당부한다. 프로그래밍 업계가 C에서 객체지향 프로그래밍으로 넘어가던 시절에 닥친 문제 하나는 '어떻게 하면 원하는 인스턴스에 접근할 수 있는가'였다. 호출하고 싶은 메서드는 있는데, 그 메서드를 제공하는 객체 인스턴스에 쉽게 접근할 방법이 없었다. 이럴 때 싱글턴, 다시 말해 전역 변수는 쉬운 해결책이었다. - 게임프로그래밍 패턴 싱글턴의 성격 1. 한 개의 클래스 인스턴스 싱글턴은 하나의 클래스에 하나의 인스턴스만 존재한다. 예를 들어, 파일 시스템을 만든다고 할 때, 한 파일에 대한 작업이 다른 곳에서 간섭받지 않도록 해..

Design Pattern 2020.09.19