전체 글 228

[Unity] 랜덤 스킬 카드 선택

스킬 데이터를 가져와 랜덤 스킬 3가지를 뽑고, 새로 고침 했을 경우 해당 랜덤스킬을 제외하고 나머지 스킬에서 랜덤으로 뽑되 만약 부족할 경우에는 랜덤 스킬에서 어쩔수없이 뽑는 형식의 카드 뽑기를 구현하는 코드이다. 스킬의 경우 플레이어가 현재 가지고 있다면 1레벨 높은 스킬을, 그렇지 않다면 새로운 스킬을 뽑는 형식이다. 스킬 데이터스킬 데이터의 경우 스킬 레벨이 1 ~ 5 까지 있다는 것에 가정하면 10001 ~ 10005 까지 skillid로 설정하여 스킬 데이터를 생성한다. "skills": [ { "Id": 10001, "Name": "파이어 볼", "PrefabName": "FireBall", "SpriteName": "FireballTexture"..

Unity 2025.07.19

DFS 리마인드

그래프에서 정점과 간선으로 구성된 자료 구조를 한 방향으로 계속 파고들다가 막히면 되돌아 오는 깊이 우선 탐색 방식을 DFS라고 한다. 백준 2606번 바이러스 문제를 예시로 들자면 https://www.acmicpc.net/problem/2606 해당 문제에서의 정점(Vertex)는 컴퓨터와, 간선(Edge) 그리고 연결된 각 컴퓨터의 간선 목록을 입력받아서 1번 컴퓨터가 몇 대의 컴퓨터에 바이러스를 옮겼는지에 대한 문제이다. 1. 입력 간선을 2차원 배열로 만들었다. 추후에 해당 2차원 배열의 반복을 통해 어떻게 연결되어있는지 체크하기 위함이다. 연결되어있는 모양을 나타내는 List[] graph 와 서로 방문했는지를 체크할 수 있는 배열 visted를 각각 생성해준다. class Solutio..

문자열이 몇 번 등장하는지 중복으로 체크하는 법(Regex)

문자열이 몇 번 등장하는지 중복으로 체크하는 방법중 Regex의 Match와 Lookahead 방식의 (?=)을 사용하여 중복을 체크할 수 있다. 결론적으로 코드를 보자면 아래와 같다. public int solution(string myString, string pat) { string pattern = $"(?={Regex.Escape(pat)})"; int answer = Regex.Matches(myString, pattern).Count; return answer; } 1.Regex이는 정규표현식으로 문자열에서 특정 패턴을 체크하거나 치환하는 등에 사용되는 일종의 검색도구이다. 이메일 형식검사, 전화번호 찾기, 숫자만 찾기 등등이 있다. 이..

C# 2025.06.18

[C#] Linq 정리

Linq에서 자주 쓰인다고 생각되는 조건 및 함수들 Where()조건 필터링list.Where(x => x > 10)Select()변환/매핑list.Select(x => x * 2)OrderBy()오름차순 정렬list.OrderBy(x => x)OrderByDescending()내림차순 정렬list.OrderByDescending(x => x)Distinct()중복 제거list.Distinct()ToArray()배열로 변환list.ToArray()ToList()리스트로 변환list.ToList()Any()하나라도 조건 만족하면 truelist.Any(x => x All()전부 조건 만족하면 truelist.All(x => x > 0)First()첫 번째 요소 반환 (조건 가능)list.First(x =>..

C# 2025.04.14

C# 문자 반복 출력 new string(n, m)

https://school.programmers.co.kr/learn/courses/30/lessons/120825  나의 풀이 using System;public class Solution { public string solution(string my_string, int n) { string answer = ""; int a = my_string.Length; int b = 0; for(int i = 0; i  % 나머지 계산으로 3개씩 배열에 담는 방식을 채택하였는데 new string (n, m)을 사용하면 n 문자열을 m개 담을 수 있다. 다른 풀이 using System;public class Solution { public s..

[Unity] typeof(T) 와 GetType()의 차이

1. 개요 Projectile의 lifeTime에 따라 해당 시간이 지나면 알아서 파괴되게끔 설정하는 Despawn코드를 적용해 주었는데, 코루틴의 시간이 지나도 사라지지 않는 버그가 발생하였다. 그래서 디버깅을 해봤더니 T 제네릭이 ProjectileController의 부모 클래스인 SkillController로 해석되는 현상이 발생했다. 아래는 ObjectManger의 Despawn 메서드 중 if문에서 type이 SkillController가 들어오는 모습이고, 타고 올라가보면 StartDestroy() 함수에서 왔는데 이는 ProjectileController에서 상속을 받아 사용하고 있는 모습이다.  2. 문제 해결 생각보다 간단하게 해결되었다  typeof(T)를 사용하니 상속 클래스를 가져..

Unity 2025.02.18

[C#] 프로그래머스 LV 2 주차 요금 계산

https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 설명이 엄청 길지만 주어진 기본요금, 추가요금, 기본시간을 계산해서 차량이 들어오고 나갈때 의 시간을 계산해주면 된다. 그렇다면 차량이 들어왔을 때 주차장 일지에 등록하듯이 dictionary를 통해 차를 넣어주고, 나갈때 최초의 등록이라면 그냥 추가만하고 이전에 등록한 적이 있었다면 더해주면 된다. 그리고 23:59 까지 출차하지 않았다면 그 계산도 따로 더해주면 된다. 전체 코드는 아래로 내리면 있기 때문에 참고하면 된다.  1. 요금 계산..

[C#] 프로그래머스 LV2 스킬트리

https://school.programmers.co.kr/learn/courses/30/lessons/49993 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  스킬을 순서대로 찍을 수 있고 선행 스킬을 찍지 않는다면 스킬을 찍을 수 없는 문제이다.처음 접근은 선행 스킬들을 스킬트리에 나열되어있는 string값을 반복하여 비교하는 방식이었지만, 생각해보면 다른 스킬들은 자유롭게 찍을 수 있고, 선행 스킬이 필요한 스킬만 검사하면 된다. 즉 스킬트리에서 선행스킬이 필요한 부분만 추출하여 이게 유효한지 아닌지를 검사하면 된다는 뜻이다.  public int solution(string skill, ..

C# 2024.12.13

[Unity] CSV 파일 적용하기

데이터 관리 방식에는 JSON, Scriptable Object, CSV 등이 있는데 각 사용처가 다르다. 그 중 CSV의 경우 보통 텍스트에 대한 데이터를 다룰 때에 CSV파일을 사용하게 되는데, 이를 적용하는 방법에 대해 알아보도록 하자. CSV 파일을 적용하는 방식은 시중에 나와있는 코드가 있기 때문에 적용만 시킨다면 쉽게 사용할 수 있다. 1. 구글 스프레드 시트구글 스프레드 시트를 이용해 액셀에서 필요한 값을 넣고, 이를 CSV파일로 변환하여 CSV파일을 만든다.   그렇다면 아래와 같은 파일명.csv라는 csv파일이 생성될 것이다. Key,TextsAttack1,공격력이 증가합니다 (소)Attack2,공격력이 증가합니다 (중)Attack3,공격력이 증가합니다 (대)Money1,플레이어의 돈 획..

Unity 2024.12.11

[C#] 프로그래머스 LV 2 뒤에 있는 큰 수 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/154539  자신 뒤에 있는 수가 자신보다 크다면 해당 숫자를 배열에 담고, 없다면 -1을 담는 문제이다. 해당 문제는 Stack으로 풀었는데, 검사할 수의 위치를 Stack에 담고 다음으로 나오는 수와 비교하여 뒷큰수가 맞다면 뒷큰수를 담고 Stack에서 제거하고, 아니라면 그 다음 수와 비교하기 위해 Stack에 놔두는 식으로 하여 마지막에 stack에 남아있는 수들은 뒷큰수를 못찾은 수들의 위치이기 때문에 차례로 -1을 해주는 방식으로 풀이하였다. using System;using System.Collections.Generic;public class Solution{ public int[..