일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- PrefixSum
- Bronze
- dirtyflag pattern
- Silver
- binary search
- two pointer
- SWEA
- 8-Puzzle
- 3D RPG
- LEVEL2
- level3
- Unity
- 프로그래머스
- level1
- Zenject
- Modern C++
- effective C++
- 프로세스 상태
- Project
- algorithm
- BOJ
- solid 원칙
- Euclidean
- programmers
- knapsack Problem
- stack
- BFS
- trie
- Gold
- Flyweight Pattern
- Today
- Total
목록Algorithm (138)
Patrick's Devlog
1. 개요https://www.acmicpc.net/problem/144991-1. 설명크기가 N X M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 지도 위에 주사위가 놓여져 있으며 전개도는 아래와 같다. 지도의 좌표는 (r, c)로 r은 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수다.주사위의 가장 처음에는 모든 면에 0이 적혀있고, 지도에는 각 칸의 정수가 쓰여져 있다. 주사위를 굴렸을 때, 이동한 칸에 쓰여있는 수가 0이면, 주사위의 바닥면에 쓰여있는 수가 칸에 복사된다. 이동한 칸이 0이 아닌 경우에는 쓰여있는 수가 주사위 바닥면으로 복사되며, 칸에 쓰여있는 수는 0이 된다. 주사위를 놓은 곳의 좌표와 이동시키는 명령이 주어졌을 때, 주사위가 이동했을 때마다..
1. 누적합누적합은 앞에서부터 차례대로 누적된 합을 구하고 이를 이용해 구간 합을 구할 수 있다.2. 문제크기가 N인 정수 배열 arr가 존재할 때 다음과 같은 연산을 M번 수행해야하는 문제가 존재한다. - 구간 l, r(l l부터 r까지를 구하기 위해, 반복문을 통해 단순히 구하게 된다면 시간 복잡도는 O(NM)이 나오게 된다. 여기서, 누적합 아이디어로 변경해보자.sum[i] = arr[1] +... + arr[i], sum[0] = 0으로 정의하고, l부터 r까지의 합은 sum[r] - sum[l - 1]과 동일하다.sum[r] = arr[1] + ... + arr[r], sum[l - 1] = arr[1] + ... + arr[l-1] 으로 정의되므로, 따라서 sum[r] - sum[l - 1]은..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dHytrL/btsI1SySqpU/kUpzmIvSOPkSE5DCgdyXdK/img.png)
1. 개요https://www.acmicpc.net/problem/75761-1. 설명철수의 토마토 농장에는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자 칸에 하나씩 넣어 창고에 보관한다.창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게된다. 하나의 토마토에 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선에 있는 토마토들에게는 영향을 주지 못하고, 토마토 혼자 저절로 익는 경우는 없다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지 그 최소 일수를 알고싶어 한다...
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/GkTUm/btsI0r1NOzw/F5CJmkvKuQUCfKcuRGZEHK/img.png)
1. 개요https://acmicpc.net/problem/36871-1. 설명 성냥개비로 위와 같은 숫자를 만드려고한다. 성냥개비의 개수가 주어졌을 때, 성냥 개비를 모두 사용해 만들 수 있는 가장 작은 수와 큰 수를 찾는 프로그램을 작성한다.1-2. 제한 사항- 첫 줄에 테스트 케이스 개수가 주어지며, 최대 100개- 각 테스트 케이스는 한줄로 이루어져 있고, 성냥개비 개수 n이 주어짐- n 은 2 이상 100 이하의 자연수- 각 테스트 케이스에 대해 입력으로 주어진 성냥 개비를 모두 사용해서 만들 수 있는 가장 작은 수와 큰 수를 출력2. 구현2-1. 풀이큰 수는 자릿수가 많을수록 커지므로, 1과 7을 이용하여 만든다. 1은 2개, 7은 3개로 다른 숫자들은 4개 이상이므로 1과 7을 이용하면 된다..
1. 개요https://www.acmicpc.net/problem/61981-1. 설명도시에는 N개의 빌딩이 있으며, 빌딩 관리인들은 다른 빌딩의 옥상 정원을 벤치마킹 하고싶어 한다. i번째 빌딩의 키가 h_i이고 모든 빌딩은 일렬로 서있으며 오른쪽으로만 볼 수 있다. i번째 빌딩 관리인이 볼 수 있는 다른 빌딩의 옥상 정원은 i+1, i+2, ... , N이다. 자신이 위치한 빌딩보다 높거나 같은 빌딩이 있으면 다음에 있는 모든 옥상은 보지 못한다.각 관리인들의 벤치 마킹이 가능한 빌딩의 수의 합을 출력한다. 1-2. 제한 사항 - 첫 줄에 빌딩의 개수 N이 주어지며, N은 1 이상 80,000 이하 자연수 - 두 번째 줄부터 N + 1번째 줄까지 각 빌딩의 높이가 h_i 주어지며, h_i는 1 이상 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Q3dcM/btsIGYsh5hM/BwICVD1xwNA21kjkYV4PA0/img.png)
1. Monotonic Stack단조 스택(Monotic Stack)은 알고리즘 문제 해결에 사용되는 특수 구조이며, 각 element들을 오름, 내림 차순으로 유지하는 알고리즘 기법이다. 일반적으로 배열에서 다음으로 크거나 작은 element를 찾는 등의 문제를 효율적으로 해결하는데 사용된다. 기존의 스택과 달리 단조 스택의 조건은 스택의 내부 element가 들어오는 element에 따라 증가, 감소하는 배열이 되도록 순서를 구성해주어야 한다. 2. 유형단조 스택의 유형은 두가지로 분류될 수 있다. 오름차순 단조 스택 (Monotic Increasing Stack)스택에 추가되는 현재 들어오려는 element는 스택에 저장된 element들보다 크거나 같아야 한다. 새 element의 크기가 작으면..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/siTge/btsEyc2cvu6/Nm22Ru6FQwCqmUTz8CU0d1/img.png)
1. 개요https://www.acmicpc.net/problem/21939 21939번: 문제 추천 시스템 Version 1tony9402는 최근 깃헙에 코딩테스트 대비 문제를 직접 뽑아서 "문제 번호, 난이도"로 정리해놨다. 깃헙을 이용하여 공부하시는 분들을 위해 새로운 기능을 추가해보려고 한다. 만들려고 하는 명령www.acmicpc.net1-1. 설명코딩 테스트 대비 문제를 직접 뽑아 "문제 번호, 난이도"로 정리했다. 이때 새로운 기능을 추가해보고자 한다. 명령어 recommend는 추천 문제 리스트에 문제가 하나 이상 있을때만 주어지며, solved는 추천 문제 리스트에 번호가 하나 이상 있을때 주어진다. 이를 토대로 추천 시스템을 만들어보자. 1-2. 제한 사항 - 첫 줄에 추천 문제 리스트..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/JbDVP/btsEaQEyYWd/qKGVP1NXak937K2xzm0IXk/img.png)
1. 트라이탐색 트리의 일종이며, 동적 집합이나 연관 배열을 저장하는데 사용되는 트리 자료구조이다. 문자열을 저장하고 효율적으로 탐색하기 위한 자료구조로 생각하면 된다. 이진 탐색 트리와 달리 트리의 어떤 노드도 그 노드 자체와 연관된 키는 저장하지 않는다. 대신 노드가 트리에서 차지하는 위치가 연관된 키를 정의한다. 즉, 키의 값은 자료 구조 전체에 분산됨을 의미한다. 노드의 모든 자손은 노드에 연관된 문자열의 공통 접두사를 공유한다. 메모리에 최적화된 경우에는 기수 트리가 된다. 2. 장단점문자열 검색 시 빠른 검색 가능문자열 탐색 시 하나씩 전부 비교하는 것 보다 시간 복잡도 측면에서 효율적각 노드에서 자식들에 대한 포인터들을 배열로 모두 저장하고 있으므로 공간적인 측면(메모리)에서는 비효율적3..