분류 전체보기 93

[개인 프로젝트] ProjectA - 인터페이스, 클래스

IState더보기public interface IState { public void Enter(); public void Update(); public void Exit(); }모든 상태들의 인터페이스 모든 상태는 진입 시점과 탈출 시점이 있으므로, Enter()와 Exit()를 추가했다. 모든 상태는 매 프레임마다 체크할 로직이 필요할 수 있으므로, Update()를 추가했다. BaseState더보기public class BaseState : IState{ // 공통 기능 컴포넌트 protected AnimationController animationController; public virtual void Enter() { } public virtual ..

[코딩테스트] Programmers - H Index (실패)

코딩테스트 연습 - H-Index | 프로그래머스 스쿨 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이[문제] H-Index는 과학자의 생산성과 영향력을 나타내는 지표 어느 과학자의 H_Index를 나타내는 값인 h를 구해야 한다. H_index 구하는 방법 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다. 이때 h의 최댓값이 H_index이다. [입력] - 논문의 인용 횟수 배열 citations [출력] - 과학자의 H_index 반환 [제한사항] - 1편 - 0회 [입출력 예] citations = [3, 0, 6, 1, 5]] 논문의 수 = 5 ..

[개인 프로젝트] ProjectA - 이동 구현 설계

하나의 스크립트에 이동 관련 코드를 모두 넣으면, 가독성과 유지보수성이 떨어진다. 이동 상태들을 여러 스크립트로 분리하고, 상태머신으로 각각의 상태들을 관리한다면, 추후 새로운 상태를 넣을 때 상태 스크립트를 작성하고 상태머신에 등록만 하면 된다. 이동은 상태패턴으로 구현하겠다. 상태패턴으로 상태 흐름을 관리하고, 실제 기능 수행은 기능 컴포넌트로 구현하겠다. 인터페이스/클래스 구조 인터페이스/클래스별 역할 정리IState상태가 기본적으로 가져야 할 기능 정의 BaseStateIState를 구현모든 상태가 가져야 할 기능 컴포넌트를 가진다. PlayerGroundStateBaseState를 상속받는 클래스 땅에서 공통적으로 처리해야 하는 기능 컴포넌트를 가진다. PlayerAirStat..

[코딩테스트] Programmers - 주식가격 (실패)

https://school.programmers.co.kr/learn/courses/30/lessons/42584?language=csharp 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이[문제] 초 단위로 기록된 주식가격 배열 prices가 주어진다. 가격이 떨어지지 않은 기간은 몇 초인지 return 하라. 문제는 무슨 말인지 알겠는데, 입출력 예시가 이해가 안 간다.[풀이] 간단한 방법은 prices[i] 뒤에 있는 숫자가 prices [i]보다 작지 않은 경우를 헤아리기. 그 개수가 가격이 떨어지지 않은 시간이다. 이중 for문을 사용하니, O(N^2) = 100,000 제곱 = 10,00..

[자료구조] 힙 삭제

힙 삭제힙에 있는 데이터를 삭제하는 것O(log N)최소 힙(Min Heap) 삭제, 최대 힙(Max Heap) 삭제가 있다. 최소 힙(Min Heap) 삭제 그래프가 최소 힙인지 아닌지 확인완전 이진 트리인지 확인각 노드의 값이 자식 노드의 값보다 작거나 같은지 확인힙의 가장 아래에 있는 리프 노드값을 루트 노드에 덮어씌운다.힙 가장 아래에 있는 리프 노드값을 삭제한다. 수정된 루트 노드가 최소 힙 조건을 만족하는지 확인한다. 루트 노드가 최소 힙 조건을 만족하지 않으면, 자식 노드와 위치를 바꾼다.바뀐 위치에서 최소 힙 조건을 만족하는지 확인한다. 바뀐 위치에서 최소 힙 조건을 만족하지 않으면, 자식 노드와 위치를 바꾼다. 최소 힙 조건을 만족하면 종료한다. 최대 힙(Max Heap) 삭제..

[코딩테스트] Programmers - 다리를 지나는 트럭 (실패)

https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이이번 문제는 문제를 이해하는데 엄청 오래 걸렸다. 2시간 넘게 풀었지만 통과하지 못했다. 코드 1 - 오답public class 다리를_지나는_트럭{ public int solution(int bridge_length, int weight, int[] truck_weights) { int answer = 0; Queue queue = new Queue(bridge_length); for..

[자료구조] 힙 삽입

우선순위 큐 구현에서 힙 자료구조의 시간복잡도가 O(log N)이므로, 힙으로 우선순위 큐를 구현해야 한다고 배웠다. 배열, 연결리스트에 삽입, 삭제, 탐색, 순회가 있듯 힙에도 삽입 기능이 있다. 힙 삽입힙에 데이터를 추가하는 것 O(log N) 최소 힙(min heap) 삽입, 최대 힙(max heap) 삽입이 있다. 최소 힙(min heap) 삽입그래프가 최소 힙인지 아닌지 확인완전 이진 트리인지 확인각 노드의 값이 자식 노드의 값보다 작거나 같은지 확인힙에 원소 삽입 (완전 이진 트리를 만족하도록 삽입)부모노드와 비교해서 최소 힙 조건을 만족하는지 확인최소 힙 조건을 만족하지 않으면 부모 노드와 스왑 우선 위 그래프가 최소 힙인지 아닌지 확인해야 한다. 최소 힙은 다음 조건을 만족해야 한다...

[코딩테스트] Programmers - 모의고사 (실패)

https://school.programmers.co.kr/learn/courses/30/lessons/42840 풀이문제 = 1번 ~ 마지막 문제까지 정답이 들은 배열 answer가 주어졌을 때, 가장 많은 문제를 맞힌 사람을 배열에 담아 반환 제한 조건answer 배열 길이는 최대 10,000문제 정답은 1 ~ 5 중 하나가장 높은 점수 받은 사람이 여럿일 경우, return 값을 오름차순 정렬하기. 풀이1번 수포자 = (1 2 3 4 5) (1 2 3 4 5) ... = 1 ~ 5번까지 순서대로 찍기. 2번 수포자 = (2 1 2 3) (2 4 2 5) (2 1 2 3) (2 4 2 5) ... = (2 1 2 3), (2 4 2 5) ... 순서대로 찍기. 3번 수포..

[자료구조] 힙(Heap)이란

힙(Heap)을 배우기 전에 우선순위 큐를 알아둬야 한다. 우선순위 큐(Priority Queue)추상 데이터 타입 우선순위가 부여되며, 우선순위가 높은 요소가 먼저 처리된다. 예시 = 우선순위가 높은 작업부터 처리하기 우선순위 큐 구현 방식배열이나 연결리스트로 구현삽입, 삭제 연산배열 = 삽입, 삭제하고 옆에 있는 데이터들을 옮겨주는 연산 -> O(N) 연결리스트 = 헤드 노드부터 삽입, 삭제할 위치까지 탐색하는 연산 -> O(N) 힙으로 구현삽입, 삭제 연산 -> O(log N) 배열과 연결리스트로 우선순위 큐를 구현하면 O(N)이 나올 수 있다. 힙으로 우선순위 큐를 구현하면 O(log N)이 나온다. 따라서 우선순위 큐는 힙으로 구현하는 것이 적합하다. 힙(Heap)이진 완전 트리(Com..

[코딩테스트] Programmers - 전화번호 목록 (실패)

https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 1문제 = 한 번호가 다른 번호의 접두어인 경우가 있는지 확인 ex) 구조대 = 119 박준영 = 97 674 223 지영석 = 11 9552 4421 -> 구조대의 번호가 지영석의 번호의 접두사이다. 입력 - 전화번호 담은 배열 phone_book 출력 - 어떤 번호가 다른 번호의 접우어인 경우가 있다 = false 반환 - 없다 = true 반환 제한 사항 - 1 - 1 - 같은 전화번호 중복 없다. 풀이 1- 119가 ..