프로그래밍
프로그래머스/해시/베스트앨범
프로그래머스/해시/베스트앨범
2021.08.10https://programmers.co.kr/learn/courses/30/lessons/42579 풀이 - 장르 별로 가장 많이 재생된 두 곡 모으기 - 가장 많이 재생된 장르 => 장르 내에서 가장 많이 재생된 노래 => 고유 번호가 낮은 노래 먼저 수록 - 해시테이블 안에 장르 클래스를 넣는 것이다 - 장르 클래스에는 재생 횟수, 2개의 노래 클래스가 들어간 리스트가 만들어짐 - 노래 클래스에는 재생 횟수와 고유 번호가 존재한다 - 장르 클래스에서 음악을 재생시킬 때, 재생 횟수를 비교하여 리스트를 갱신한다 - LinQ를 이용하여 장르 클래스의 재생 횟수가 높은 순서대로 수행 - 2개의 노래 클래스에서 각 고유 번호를 리턴한다 C# using System; using System.Collectio..
프로그래머스/해시/위장
프로그래머스/해시/위장
2021.08.07https://programmers.co.kr/learn/courses/30/lessons/42578 풀이 - 스파이들은 매번 다른 옷으로 조합해서 입어야 함 (그냥 하나의 항목만 다르면 됨) - 놀랍게도 최소 한 부위만 입으면 되므로, 티셔츠만 하나 입는 것도 가능함 :O.... 그게 스파이냐 - 서로 다른 옷 조합의 수를 return하도록 짜기 - Input은 이런 방식. ["crowmask", "face"] - 'face' 키에 밸류로 리스트를 넣으면 되겠군 - 키 하나, 둘, 셋, ..., N개를 뽑아서 조합을 시도하면 되겠군 - 조합을 시도할 때 해당 항목에 리스트의 개수를 생각해서 넣으면 되겠군 C# using System; using System.Collections.Generic; usin..
프로그래머스/해시/전화번호 목록
프로그래머스/해시/전화번호 목록
2021.08.06https://programmers.co.kr/learn/courses/30/lessons/42577 풀이 - 119, 11 9552 4421이 있으면, 후자 접두에 119가 들어있으므로 false - 접두어가 하나라도 존재한다면 false를 리턴하면 됨 - 119라면, 1, 11를 해시에 등록해두면 되는 거 아니냐 - C#을 지원하지 않아서 Java로만 풀었음 Java import java.util.HashSet; class Solution { public boolean solution(String[] phone_book) { HashSet hash = new HashSet(); for(String e : phone_book) { for(int i=1; i
프로그래머스/위클리 챌린지/부족한 금액 계산하기
프로그래머스/위클리 챌린지/부족한 금액 계산하기
2021.08.06https://programmers.co.kr/learn/courses/30/lessons/82612 풀이 - 원래 이용료 price => n번째 이용 시 price * N - count번 타는 경우, 현재 가진 금액에서 모자란 금액을 return - 부족하지 않으면 0 return - count번 반복하여, money에서 price * n을 빼면 되는 간단한 문제 - long으로 반환이 안되는 케이스가 있어서 아예 long으로 선언해버림 ^_^.... C# using System; class Solution { public long solution(int price, int money, int count) { long _money = money; for(int n=1; n= 0) return (long..
프로그래머스/해시/완주하지 못한 선수
프로그래머스/해시/완주하지 못한 선수
2021.08.01https://programmers.co.kr/learn/courses/30/lessons/42576 강의 듣기 전 풀이 - Java로 풀이 - 꼴찌는 완주에서 제외 - 동명이인 존재 가능 - 완주하지 못한 선수의 이름 return 1) string, int 해시맵을 작성 2) 완주한 선수 이름이 call될 때마다 해시값에 +1 3) 참가자 선수 이름으로 반복, 해시값에 -1 4) -1을 수행할 때, 해시값이 0보다 크지 않다면 해당 이름 리턴 class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; //해시맵 작성 java.util.HashMap hash = new java..
Unity TextMesh Pro Sprite : 이모티콘 및 아이콘을 런타임에 동적으로 생성 또는 변경하기
Unity TextMesh Pro Sprite : 이모티콘 및 아이콘을 런타임에 동적으로 생성 또는 변경하기
2021.08.01이번 프로젝트에서는 텍스트 사이에 아이콘을 넣어야 하는 경우가 있었다. TextMesh Pro가 Sprite Importer를 제공하므로, 쉬울 것이라고 생각했다. 실제로, 통합되어 있는 Sprite를 Multiple로 자르고 SpriteAsset을 생성하기만 하면 제대로 작동했다. 그러나, 내 프로젝트의 경우 번들이나 인터넷에서 다운받은 이미지를 아이콘으로 만드는 작업이 필요했다. TextMeshPro의 Sprite Asset을 만들기 위해서는 에디터를 통해서만 생성, 업데이트 할 수 있었기 때문에 고민이 깊었다. 이를 해결하기 위해 찾아보던 중, 아래의 게시글에서 다운로드한 이미지로 Sprite Asset을 만드는 절차에 대한 공식 답변을 찾아냈다. https://forum.unity.com/thre..
C# 연산자 오버로딩 : ==, Equals에서 null값 판단하기
C# 연산자 오버로딩 : ==, Equals에서 null값 판단하기
2021.03.24문제 상황 == 연산자를 오버로딩하고 사용하려 했는데, 문제가 발생했다. a == b 와 같은 구문에서 a나 b가 null인 경우를 판단할 수 없었기 때문이었다. public static bool operator ==(Stat a, Stat b) { if (a == null && b == null) return true; } 이와 같이 작성하게 되면, 스택 오버플로우가 발생한다. 이유는 당연하다. a == null인 구문도 연산자 오버로딩한 '==' 연산자를 사용하기 때문. 해결법 object.ReferenceEquals(object, object)을 사용하면 된다. Equals나 ==과는 달리, object.ReferenceEquals는 재정의할 수 없는 메서드이다. 이 메서드는 지정한 object의 ..
Unity UGUI InputField의 한글 입력 문제 해결하기
Unity UGUI InputField의 한글 입력 문제 해결하기
2020.12.15Unity의 UGUI에는 고질적인 한글 입력 문제가 있다. 예를 들면 아래와 같은 것. 이외에도 입력한 한글이 바로 Inputfield에 나타나지 않는 등의 문제가 많았다. 이 현상을 해결하려고 GUI TextField를 쓰는 등 다양한 짓을 해봤었으나, 최근 확실한 해결 방법이 나왔다. forum.unity.com/threads/inputfield-bugs-korean-language.728858/ Unity UI - InputField Bugs Korean Language WTF? can you see two bugs? How can I fix this? Please help. [MEDIA] forum.unity.com 본 링크에서 한국인 개발자분이 제보해주신 덕에 유니티 UI팀에서 업데이트를 했다...
그래픽(스프라이트) 없이도 UI Raycast하기
그래픽(스프라이트) 없이도 UI Raycast하기
2020.08.04보이지 않는 특정 영역을 Raycast하고 싶을 때가 있다. 이 경우 이전에는 새 게임오브젝트에 이미지를 만들고, 유니티 기본 그래픽으로 들어 있는 'UIMask'를 사용해 Raycast를 처리하였으나, 비효율적이라는 것을 깨달았다. - 보이지 않는 이미지이나 사실은 조금은 불투명한 이미지가 깔린다. (UIMask) - 어쨌든 이미지를 그리는 것이므로 배칭을 먹는다. - 이런 오브젝트가 많아질 수록 UI 최적화에 문제가 생길 수 있다. 해결 방법은 아래의 게시글에서 찾았다. https://answers.unity.com/questions/1091618/ui-panel-without-image-component-as-raycast-target.html UI panel without Image compone..
LINQ Method 정리
LINQ Method 정리
2020.05.06본 글은 공부하며 작성하였습니다. 정보를 얻으실 때 사실과 다르거나 부정확한 정보가 들어있을 수도 있습니다. LINQ의 Method를 정리한다. 예제는 마이크로소프트 문서 또는 본인 코드. Aggregate 데이터를 누적하여 집계한다. 원하는 규칙을 정해 데이터를 가공한다고 생각하면 된다. string[] fruits = { "apple", "mango", "orange", "passionfruit", "grape" }; // Determine whether any string in the array is longer than "banana". string longestName = fruits.Aggregate("banana", (longest, next) => next.Length > longest.L..
Unity : Child를 Destroy 후 ChildCount를 참조할 때 문제상황
Unity : Child를 Destroy 후 ChildCount를 참조할 때 문제상황
2019.11.28Destroy로 해당 오브젝트의 Child를 모두 삭제하고 싶을 때, for를 사용할 경우 보통 다음과 같은 코드를 짜게 될 것이다. for (int i = 0; i < transform.childCount; i++) { Destroy(transform.GetChild(i).gameObject); } 이후, ChildCount를 출력하면 어떻게 될까? for (int i = 0; i < transform.childCount; i++) { Destroy(transform.GetChild(i).gameObject); } print(transform.childCount); 그렇다. 0이 아니다. 처음에 이걸 알고 난 이후에 영문도 모른 채 자기자신을 공격했다. 왜 이런 일이 일어났을까? Destroy를 호출해..
ML-Agents 공부 (3) 190818
ML-Agents 공부 (3) 190818
2019.08.18본 카테고리는 "공부"입니다. 정보를 얻으실 때 사실과 다르거나 부정확한 정보가 들어있을 수도 있습니다. #은 공부하면서 스스로가 적는 코멘트입니다. 1) Academy 스크립트 작성 참 편리하게도 추상 클래스로 되어 있기 때문에, Academy를 상속받기만 하면 됨. 상속받으면 빈 프로젝트여도 Academy로 작동한다. #후에 라이브러리 공부하기 Inspector 창에서 Academy의 상세 정보 설정 가능. Time Scale : 배속. 15로 잡으면 15배속으로 학습이 이루어진다. Target Frame Rate : 목표로 하는 화면의 프레임. 2) Agent 스크립트 작성 Agent를 상속받으면 해당 스크립트는 에이전트로 판단됨. AgentReset Agent 초기화 함수. CollectObser..