[ 서론 ] 이전에 못풀었던 문제를 다시 풀어보았습니다. 1. 문제설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다.신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다.한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다.k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다.유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다. 다음은 전체 유저 목록이 ["muzi", "fro..
https://welcomeheesuk.tistory.com/67 [디자인패턴] 6. 유니티에서 옵저버패턴 오늘 유니티에서 적용해볼 패턴은 '옵저버 패턴'입니다. 옵저버 패턴의 정의는 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이가고 자동으로 갱신되는 방식으로 일대다 welcomeheesuk.tistory.com 1. 옵저버 패턴? 옵저버 패턴에 대해 정리한 여러 사이트를 본 후 제가 이해한 옵저버 패턴은 객체끼리 연락(정보)을 주고 받으며 상호작용을 하는 디자인 패턴이라고 생각합니다. 옵저버 패턴에서는 주제(Subject)와 옵저버(Observer)가 느슨하게 결합되어 있는 구조이며, 한 객체의 정보가 바뀌면 연결된 다른 객체들에게 연결이 가서 정보가 갱신되는 일대다 의존성을 가진..
[참고 사이트] https://dhshin94.tistory.com/137 컴포넌트 패턴 (Component Pattern) 1. 컴포넌트 패턴 정의 서로 다른 기능은 나누어 작성하여 서로간 커플링 없이 다룰 수 있게 하는 것 => 로직을 기능별로 컴포넌트화 하는 것 2. 컴포넌트 패턴 사용 이유 using System.Collections; using S dhshin94.tistory.com 서론 유니티 디자인 패턴을 검색하면 컴포넌트 패턴이 다가가기 쉽다는 내용이 있었다. 그래서 이번엔 유니티 컴포넌트 패턴에 대해 공부해보았다. 컴포넌트 패턴 위 참고사이트를 통해서 컴포넌트 패턴이란 무엇이고, 왜 사용하는지 알게되었다. 유니티는 기본적으로 컴포넌트를 활용하는 시스템이다. 실제로 오브젝트의 인스펙터 창..
서론 유니티로 게임 프로젝트를 만들어보았는데 유니티에 대한 이해도가 다소 부족한 것 같아서 공부하게 되었습니다. 다음 영상은 유니티 싱글톤 설명 영상 중에 가장 이해가 잘 되었던 영상입니다. https://www.youtube.com/watch?v=a5TCCQgdv-E&t=11s 싱글톤이란? 싱글톤은 유니티 입문자들이 접근하기 쉽고, 게임 개발 시 많이 사용되는 디자인 패턴 중 하나입니다. 보통 게임을 만들다보면 전역 변수를 선언 후 인스펙터에서 드래그 앤 드랍으로 연결을 하게 된다. 하지만 게임이 복잡해질수록 전역 변수의 수도 늘어날 것이고, 그만큼 메모리도 많이 잡아먹게 된다. 이러한 문제를 해결하기 위해 싱글톤 패턴을 사용하는 것이 좋다. 싱글톤은 게임 내에서 공통적으로 관리하는 데이터를 모아놓은 ..
1. 문제설명 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요. 2. 제한사항 ● arr은 길이 1이상, 15이하인 배열입니다. ● arr의 원소는 100 이하인 자연수입니다. 3. 입출력 예시 arr return [2,6,8,14] 168 [1,2,3] 6 4. 나의 풀이 유클리드 호제법 사용. public int solution(int[] arr)..
1. 문제설명 N개의 스티커가 원형으로 연결되어 있습니다. 다음 그림은 N = 8인 경우의 예시입니다. 원형으로 연결된 스티커에서 몇 장의 스티커를 뜯어내어 뜯어낸 스티커에 적힌 숫자의 합이 최대가 되도록 하고 싶습니다. 단, 스티커 한 장을 뜯어내면 양쪽으로 인접해있는 스티커는 찢어져서 사용할 수 없게 됩니다. 예를 들어 위 그림에서 14가 적힌 스티커를 뜯으면 인접해있는 10, 6이 적힌 스티커는 사용할 수 없습니다. 스티커에 적힌 숫자가 배열 형태로 주어질 때, 스티커를 뜯어내어 얻을 수 있는 숫자의 합의 최댓값을 return 하는 solution 함수를 완성해 주세요. 원형의 스티커 모양을 위해 배열의 첫 번째 원소와 마지막 원소가 서로 연결되어 있다고 간주합니다. 2. 제한사항 ● sticker..
1. 캐릭터 애니메이션 유닛과 적군에 이동, 공격, 죽음 애니메이션을 적용시켜줬습니다. 적군은 공격 애니메이션이 따로 없어 T-Pose라는 애니메이션으로 대체하여 기능을 구현했습니다. 해당 모델의 애니메이션을 복사하여 커스텀한 후 적용시켜줬습니다. 유닛 프리팹에 애니메이션을 적용하였습니다. 기본적으로 스폰이 되면 바로 이동 애니메이션을 활성화시켜주고, 공격범위 리스트가 0보다 크면 Attack 애니메이션을 활성화, 아니라면 다시 이동 애니메이션을 활성화, 현재 체력이 0이 되면 Die 애니메이션을 활성화 시켜주도록 설정하였습니다. Attack과 Die는 bool형태로 가져왔습니다. Die 애니메이션을 실행하고 끝나면 해당 유닛이 디액티브되도록 설정했습니다. 2. 배경음 배경음은 유니티 에셋스토어에서 무료..
1. 유닛 추가 유닛이 검사밖에 없어서 탱커와 아처를 추가해줬습니다. 현재 쓰고 있는 모델이 검사밖에 지원하지 않아서 scale을 조정하여 외관을 조금 바꿔줬습니다. 적군은 한마리로 설정하였고, 보스만 따로 만들어줬습니다. 누가봐도 탱커입니다. 활이 없어요..ㅠㅠ 탱커와 아처 모두 기존 검사와 같이 이동, 공격기능을 담당하는 스크립트를 인스펙터에 넣어주고, 체력바도 설정해줬습니다. 2. 체력바 기능 체력바는 예전에 받았던 UI팩에서 슬라이더UI로 설정해줬습니다. 체력바를 빨간색, 검은색 하나씩 만들어주고, 빨간색이 앞으로 오게 Z값을 변경해줬습니다. 현재 적용한 Sprite는 원본을 훼손하지 않기 위해 복사본으로 만들어줬습니다. 공격을 받아 체력이 닳으면 오른쪽에서 왼쪽으로 체력바가 줄어들게 센터를 왼쪽..
DFS? BFS? DFS와 BFS는 그래프를 탐색하는 방법의 일종이다. 그래프란 정점들과 그 정점들을 연결하는 간선들로 이루어진 자료구조이다. DFS는 깊이우선탐색으로, 그래프를 최대한 깊이 탐색한 후 옆으로 이동하여 똑같이 탐색하는 방법이다. BFS는 너비우선탐색으로, 그래프를 옆에서 옆으로 탐색한 후 점점 밑으로 내려가며 탐색하는 방법이다. DFS 예시 https://school.programmers.co.kr/learn/courses/30/lessons/43165?language=csharp 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 위 문제는 ..
그리디 알고리즘이란? 그리디 알고리즘이란 우리말로 탐욕법, 탐욕 알고리즘, 욕심쟁이 알고리즘 등 여러가지 말로 불립니다. 이는 눈 앞에 있는 것이 더 좋아보이면 그것을 추구하는 알고리즘입니다. 대표적인 예시를 들어보겠습니다. : 상품에 대한 가격이 매개변수로 주어집니다. 그리고 서로 다른 금액의 동전이 들어있는 1차원 배열이 주어집니다. 상품을 주어진 배열의 동전으로 계산하려고 할 때 지불해야하는 동전의 개수의 최솟값을 리턴해야 합니다. void Start() { int[] coins = { 10, 500, 50, 100 }; Debug.Log(Greedy_Price(1990, coins)); } public int Greedy_Price(int price, int[] coins) { int answer..