일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Euclidean
- 3D RPG
- Zenject
- stack
- Project
- SWEA
- 8-Puzzle
- BFS
- Gold
- level3
- PrefixSum
- Silver
- Unity
- trie
- Flyweight Pattern
- LEVEL2
- level1
- two pointer
- effective C++
- knapsack Problem
- Modern C++
- dirtyflag pattern
- Bronze
- BOJ
- 프로그래머스
- binary search
- programmers
- 프로세스 상태
- solid 원칙
- algorithm
- Today
- Total
목록All (168)
Patrick's Devlog
1. 개요 https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 1-1. 설명 방향 그래프가 주어지면 주어진 시작점에서 다른 모든 정점으로의 최단 경로를 구하는 프로그램을 작성한다. 단, 모든 간선의 가중치는 10 이하의 자연수이다. 1-2. 제한 사항 - 첫 줄에 정점 개수 V, 간선 개수 E가 주어지며, V는 1 이상 20,000이하이고 E는 1 이상 300,000 이하 - 모든 정점은 1부터 V까지 번호가 ..
1. Dijkstra Algorithm 음의 가중치가 없는 그래프의 한 정점(Vertex)에서 모든 정점까지의 최단거리를 각각 구하는 알고리즘이다. 처음 알고리즘의 시간복잡조는 O(V^2)이나, 우선순위 큐 등을 이용해 더욱 개선된 알고리즘이 나오면서 최종적으로 O((V+E)logV)의 시간복잡도를 가지게 되었다. 여기서 V는 정점의 개수, E는 한 정점의 주변 노드이다. 그래프 방향 유무는 상관없으나, 간선(Edge)중 하나라도 가중치가 음수이면 알고리즘은 사용될 수 없다. 다익스트라를 확장시킨 알고리즘이 바로 A* 알고리즘이다. 1-1. Aigorithm P[A][B] -> A와 B사이의 거리라고 가정 1. 출발점으로부터 최단거리를 저장할 배열 d[v] 생성, 출발 노드에는 0을 출발점을 제외한 다른..
1. 개요 https://www.acmicpc.net/problem/2635 2635번: 수 이어가기 첫 번째 수가 주어진다. 이 수는 30,000 보다 같거나 작은 양의 정수이다. www.acmicpc.net 1-1. 설명 다음과 같은 규칙에 따라 수를 만든다 - 첫 번째 수로 양의 정수가 주어짐 - 두번째 수는 임의로 양의 정수중 하나 선택 - 세번째 수부터는 앞의 앞의 수에서 앞의 수를 빼서 생성 - 음의 정수가 만들어지면, 이 음의 정수는 버리고 더 이상 수를 만들지 않음 입력으로 첫번째 수가 주어질 때, 이 수에서 시작하여 위의 규칙으로 만들어지는 최대 개수의 수들을 구하는 프로그램을 작성한다. 1-2. 제한 사항 - 첫 줄에 첫 번째 수가 주어지며 이 수는 30,000 이하 양의 정수 2. 구..
1. 개요 https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 1-1. 설명 2xn 크기의 직사각형을 1x2, 2x1 타일로 채우는 방법의 수를 구하는 프로그램을 작성한다. 1-2. 제한 사항 - 첫 줄에 n이 주어지며, n은 1 이상 1,000 이하 2. 구현 2-1. 풀이 2xn 타일링 2와 마찬가지로 Dynamic Programming을 진행하였다. 동일하게 1부터 5까지 차근차근 타일을 그려보았으며, 점화식을 찾아 코드로 구현하였다. 2-2. 코드 #includ..
1. 개요 https://www.acmicpc.net/problem/1543 1543번: 문서 검색 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한 www.acmicpc.net 1-1. 설명 영어로만 이루어진 어떤 문서를 검색하는 함수를 만드려고 한다. 이 함수는 어떤 단어다 총 몇번 등장하는지 세려고 한다. 그러나, 함수는 중복되어 세는것은 배고 세야 한다. 문서와 검색하려는 단어가 주어졌을 때, 그 단어가 최대 몇번 중복되지 않게 등장하는지 구하는 프로그램을 작성한다. 1-2. 제한 사항 - 첫 줄에 문서가 주어지며, 문서의 최대 길이는 2500 - 둘째줄에는 ..
1. 개요 https://www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 1-1. 설명 2xn 직사각형을 1x2, 2x1과 2x2 타일로 채우는 방법의 수를 구하는 프로그램을 작성한다. 1-2. 제한 사항 - 첫 줄에 n이 주어지며, n은 1 이상 1,000 이하 2. 구현 2-1. 풀이 Dynamic Programing을 이용하여 풀면 된다. 점화식은 n이 1일때부터 타일을 배치하여 점화식을 찾았다. 점화식은 DP[n] = DP[n-1] + DP[n-2] * 2 임을 알 수 있다. n에..
1. 디자인 패턴 목적 : 소프트웨어 재사용성, 호환성, 유지 보수성 보장 디자인 패턴은 특정한 구현이 아닌 아이디어 재사용, 호환, 유지보수 시 발생하는 문제 해결을 예방하기 위해 나타난 패턴 1-1. SOLID 원칙 Single Responsibility Principle : 하나의 클래스는 하나의 역할만 해야 함 Open - Close Principle : 확장에는 열려있고, 수정에는 닫혀있어야 함 Liskov Substitution Principle : 자식이 부모 자리에 항상 교체될 수 있어야 함 Interface Segregation Principle : 인터페이스가 잘 분리되어, 클래스가 꼭 필요한 인터페이스만 구현하도록 해야 함 Dependency Inversion Property : 상위..
1. 개요 https://www.acmicpc.net/problem/2847 2847번: 게임을 만든 동준이 학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어 www.acmicpc.net 1-1. 설명 학교 수업을 들은 동준이는 스마트폰 게임을 제작하였다. 총 N개의 레벨이 있으며 각 레벨을 클리어시 점수가 주어진다. 이때, 점수는 레벨에 따라 높아져야 하나, 동준이의 실수로 쉬운 레벨이 어려운 레벨보다 점수를 많이 받는 경우를 만들었다. 이를 해결하기 위해 특정 레벨 점수를 감소시키려 한다. 각 레벨을 클리어할때 얻는 점수가 주어졌을때, 몇번 감소시키면 되는지 구하는..