분류 전체보기 48

Awake, OnValidate, Initialize 차이점

1. AwakeUnity 라이프 사이클의 일부.스크립트 인스턴스가 로딩될 때 한 번만 호출된다.비활성화 상태여도 호출된다.다른 스크립트의 Awake 메서드와의 실행 순서는 보장되지 않는다.초기 설정, 변수 초기화, 컴포넌트 참조 등에 사용된다.2. OnValidateUnity 에디터에서만 동작한다.인스펙터에서 값이 변경되거나, 스크립트가 로드될 때마다 호출된다.런타임 중에는 호출되지 않는다.에디터에서의 유효성 검사, 값 조정, 에디터 전용 로직 등에서 사용한다.3. Initialize사용자 정의 메서드다.개발자가 직접 호출해서 사용한다.객체의 초기 상태 설정, 외부에서 필요한 데이터를 전달받아 초기화할 때 사용한다.언제, 어떻게 호출할지는 개발자가 결정한다.

Work, Study/Unity 2024.07.29

직렬화, 프로퍼티와 필드

1. 직렬화의 의미객체의 상태를 저장하거나, 전송할 수 있는 상태로 변환하는 프로세스.Unity에서는 이를 사용해서 프리팹, 에셋, 씬 등의 데이터를 저장한다. 1.1. 프로퍼티와 필드필드 : 클래스의 변수. 데이터를 직접 저장한다.프로퍼티 : 메서드처럼 동작하는 멤버. get, set 접근자로 필드에 접근한다. 1.2. Unity의 직렬화 규칙Public 필드 : 자동 직렬화private 필드 : [SerializeField] 속성을 붙여야 직렬화된다.프로퍼티 는 직렬화되지 않는다.프로퍼티는 메서드이다. get, set 은 코드 블럭을 가질 수 있기 때문에, 단순한 데이터 저장 이상의 로직을 가질 수 있다.직렬화는 데이터 저장이 목적이다. 로직을 포함하는 프로퍼티는 저장 대상이 아니다. 1.3. 왜 이..

Work, Study/Unity 2024.07.29

[백준](Python, TypeScript) 1018번 : 체스판 다시 칠하기

https://www.acmicpc.net/problem/10181. 풀이- 주어진 행렬을 8x8로 자른 뒤, 체스판이 되도록 칠하는 문제다.- 체스판의 모양은 항상 2개밖에 없다 : 행렬의 좌측 상단이 흰색이거나, 검은색이거나. 즉,1) 주어진 행렬의 가장 왼쪽 상단의 점을 보고,2) 해당 위치를 기준으로 8x8 행렬에 대해 왼쪽 상단의 점이 흰색일 때 고쳐야 할 칸의 개수와 검은색일 때 고쳐야 할 칸의 개수를 구한 뒤, 그 중 작은 값만 가져간다. - 행, 열의 개수가 50개 이하이므로 최대로 고쳐야 할 칸의 수는 1250개일 것이다. 그래서 최소 칸의 개수를 1251로 놓고 시작했다.- 2차원 행렬이라 변수를 설정할 때 N, M이나 i, j로 놓으면 헷갈리는 경우가 많은데, 나 같은 경우는 row,..

[백준, Python] 1463 - 1로 만들기

문제 링크 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.1. X가 3으로 나누어 떨어지면, 3으로 나눈다.2. X가 2로 나누어 떨어지면, 2로 나눈다.3. 1을 뺀다.정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 1. 풀이- 처음에는 BFS로 풀었다. 그런데 시간 초과가 났다.1. DP로 풀었다. ('동적 프로그래밍'이라는 말을 쓰지만 메모이제이션이라는 말이 더 직관적인 것 같다.)2. 글을 쓰면서 BFS 코드를 다시 봤는데, 암만 생각해 봐도 BFS 코드가 DP 코드에 비해 시간 초과가 날 부분이 없다는 생각이 들었다. 그래..

[Python] 힙

1. 힙이란? 1 / \ 3 4 / \ / 5 6 7- 완전 이진 트리 Complete Binary Tree 형태를 갖는 자료구조이다.-- 완전 : 마지막 레벨을 제외한 모든 레벨(깊이)에서 노드가 완전히 채워져 있다-- 이진 : 모든 부모 노드는 2개의 자식 노드를 갖는다. - 모든 부모 노드의 값은, 자식 노드보다 크거나 같다. - 배열로 구현할 수 있다.-- 인덱스 i 에 대해, 왼쪽 자식은 2i + 1 에, 오른쪽 자식은 2i + 2 에 위치한다.-- 부모 노드는 (i - 1) // 2 에 위치한다.1.1. 추가 과정(heapq.heappush)1. 주어진 배열의 가장 마지막 인덱스에 값을 추가함2. 추가한 값이 부모 노드보다 작다면, 부모 노드와의 ..