본문 바로가기

전체 글136

대리자 함수 등록과 제거 (람다식) Q. Delegate, Action, Func 를 사용 시, 콜백함수를 등록할 때 과연 람다식으로 작성한 함수도 제거가 될까? 개인 공부를 하다가 한 가지 의문이 들었다.Manager 클래스를 통해 상태변화를 알려주는 콜백 함수를 Action에 등록하고 제거하는 과정에서 보통 이런 콜백 함수는 람다식으로 쓰는 경우가 자주 있는데, 등록은 그렇다 치고 제거도 람다식으로 가능한가?평소 작업하던 방식은 Action 자체를 null로 밀어버리는 방식을 썼는데등록한 클래스에서 람다식으로 등록 및 제거를 하는 방식이 가능한지 의문이 들었다.  using System;using UnityEngine;public class ActionTest : MonoBehaviour{ public static Action O.. 2024. 6. 11.
프로세스 (C#) 📌프로그래머스 42587💡풀이제거 삽입을 위해 List ints를 선언while문으로 원하는 location의 프로세스가 실행 될 때 까지 반복.bool 변수 canProcess를 true로 선언가장 앞에있는 ints[0]을 임시 정수 temp 에 담아놓고 ints[0]을 삭제foreach문으로 ints 안에 남아있는 값들 중 temp 보다 큰 값이 있으면 temp를 ints 가장 뒤에 넣고(Add) canProcess = false만약 canProcess == true 즉, 실행 가능하면 answer + 1 하고 location이 0이면(찾는 프로세스면) while문 종료실행이 되건 안 되건 location을 -1 하여 순서를 앞으로 당김. 만약 0보다 작으면 가장 뒤인 ints.Count - 1p.. 2024. 6. 10.
기능개발 (C#) 📌프로그래머스 42586💡풀이개발 완료에 걸리는 일자를 구한 정수 배열 int[] days를 만듦.정수 배열을 Queue로 이식.순서에 맞게 완료 시기마다 한 번에 배포될 수를 담을 List를 선언.Queue에 담겨있는 int가 있는동안 while문으로 먼저 배포가 되어야 할 기능의 개발일을 꺼내고(Dequeue) count + 1이중 while문으로 다음 기능의 개발일을 확인 후 아직 개발완료가 아니면 break, 개발완료 되었으면 현재 기능과 같이 배포가 가능하므로 Dequeue 및 count + 1while문 한 번 돌 때 마다 count를 List에 Addpublic int[] 기능개발(int[] progresses, int[] speeds){ int[] days = new int[pro.. 2024. 6. 9.
의상 (C#) 📌프로그래머스 12949💡풀이Dictionary를 사용해 각 의상 종류에 맞는 옷의 개수를 저장의상을 착용하는 조합을 구하기 위해 각 종류의 의상 수를 곱함(해당 종류의 의상을 안 입는 경우 포함하여 +1) 의상을 안 입는다는 경우는 없으니 answer - 1public int 의상(string[,] clothes){ int answer = 1; Dictionary dict = new Dictionary(); for(int i = 0; i 2024. 6. 8.
행렬의 곱셈 (C#) 📌프로그래머스 12949💡풀이행렬 곱셈의 조건인 행렬 arr1의 행과 arr2의 열 개수가 같아야 한다. 즉 곱으로 나올 행렬은 int[arr1.GetLength(0), arr2.GetLength(1)] 이다.제한조건에서 곱할 수 있는 배열만 주어진다고 했으니 따로 if문으로 검증할 필요는 없다.행렬 하나의 성분을 구하기 위해 arr1의 열의 개수만큼 반복해야하고 또한 전체 행렬을 돌기위해 2중 반복문이 필요해 총 3중 for문으로 해결한다.public int[,] 행렬의곱셈(int[,] arr1, int[,] arr2){ int row = arr1.GetLength(0); int col = arr2.GetLength(1); int[,] answer = new int[row, col].. 2024. 6. 7.
[RequireComponent] RequireComponent 어트리뷰트란?RequireComponent 특성은 필수 구성 요소를 종속성으로 자동 추가합니다. 설명 그대로 클래스에서 어트리뷰트를 사용해 명시적으로 사용할 컴포넌트를 작성해두면 해당 컴포넌트를 강제로 사용하기 때문에 따로 인스펙터에서 추가할 필요가 없다.   Unity - Scripting API: RequireComponentWhen you add a script which uses RequireComponent to a GameObject, the required component is automatically added to the GameObject. This is useful to avoid setup errors. For example a script might.. 2024. 6. 6.
H-Index (C#) 📌프로그래머스 42747💡풀이citations를 역순으로 정렬한다.인용수가 큰 순서대로 나열됐으니 0 ~ citations.Length - 1 까지 검사한다.citations[i]의 원소 크기(인용수)가 i + 1(논문 수) 와 같거나 크기만 하다면 h번 이상 h편 인용됐다는 조건에 맞다.해당 조건이 맞다면 int answer를 하나씩 더해주면 된다.조건이 안 맞으면 이후로는 인용수가 편수에 못미치니 바로 끝내도 된다.public int HIndex(int[] citations){ int answer = 0; Array.Sort(citations); Array.Reverse(citations); for (int i = 0; i = i + 1) a.. 2024. 6. 6.
할인 행사 (C#) 📌프로그래머스 131127💡풀이시작일부터 10일 연속이므로 최대 시작일을 지정 후 for문 시작number와 일치하는지 확인할 새로운 정수배열을 for문 내부에 생성want와 discount를 전부 조사하며 discount[i] == want[j] 일 때, 새로운 정수배열의 j를 1증가조사가 끝나면 새로운 정수배열과 number의 각 원소를 비교, 일치하면 answer 1증가public int 할인행사(string[] want, int[] number, string[] discount){ int answer = 0; // 시작일 부터 10일 연속이니 최대 시작일을 day  discount의 길이가 길수도 있다는걸 생각하면 3중 for문은 (그걸 떠.. 2024. 6. 5.
[RuntimeInitializeOnLoadMethod] RuntimeInitializeOnLoadMethod 어트리뷰트게임이 시작될 때 메서드를 자동 호출해주는(최초 1회) 어트리뷰트이다. RuntimeInitializeOnLoadMethod 특징static 메서드만 적용 가능하다.파라미터로 RuntimeInitializeLoadType을 받으며 실행 순서를 정할 수 있다. (기본은 Awake 이후이다.)MonoBehaviour가 아닌 일반 메서드에서도 호출 가능하다.RuntimeInitializeOnLoadMethod 어트리뷰트를 사용한 메서드가 여러개일 때, 실행 순서는 보장되지 않는다.  실행순서는 파라미터를 사용하지 않았을 때 Awake가 먼저 실행된다.실행순서가 RuntimeInitialize 메서드가 먼저라면 파라미터를 사용하도록 하자.  usin.. 2024. 6. 5.