분류 전체보기(112)
-
[JS] 파괴되지 않은 건물: (new) 누적합
새로운 알고리즘입니다! 배열의 일정 구간을 일괄적으로 N만큼 조작하고 싶을 때 사용할 수 있습니다.먼저 문제를 보죠! 문제 요약 N x M 크기의 행렬 모양의 게임 맵이 있습니다. 이 맵에는 내구도를 가진 건물이 각 칸마다 하나씩 있습니다. 적은 이 건물들을 공격하여 파괴하려고 합니다. 건물은 적의 공격을 받으면 내구도가 감소하고 내구도가 0이하가 되면 파괴됩니다. 반대로, 아군은 회복 스킬을 사용하여 건물들의 내구도를 높이려고 합니다. 적의 공격과 아군의 회복 스킬은 항상 직사각형 모양입니다. 예를 들어, 아래 사진은 크기가 4 x 5인 맵에 내구도가 5인 건물들이 있는 상태입니다. 첫 번째로 적이 맵의 (0,0)부터 (3,4)까지 공격하여 4만큼 건물의 내구도를 낮추면 아래와 같은 상태가 됩니다. 두..
2022.09.20 -
[JS] 길찾기 게임 - 하발자 특(나): 힙 씀, 상발자 특: 트리 씀
길 찾기 게임 문제는 트리를 이용해야 합니다. 조금 아는 지식이 무섭다고.. 이런 문제 있으면 자꾸 힙을 쓰게 되서 구현이 너무 험난했는데요.. 트리를 쓰면 꽤나 쉬운 문제였습니다. 원래 알고리즘 올린 다음날엔 그거 쓰는 코테 문제 푸는게 국룰인거 아시죠? 2022.09.18 - [알고리즘] - [JS] 트리와 힙의 차이는 뭘까? 문제 요약 전무로 승진한 라이언은 기분이 너무 좋아 프렌즈를 이끌고 특별 휴가를 가기로 했다. 내친김에 여행 계획까지 구상하던 라이언은 재미있는 게임을 생각해냈고 역시 전무로 승진할만한 인재라고 스스로에게 감탄했다. 라이언이 구상한(그리고 아마도 라이언만 즐거울만한) 게임은, 카카오 프렌즈를 두 팀으로 나누고, 각 팀이 같은 곳을 다른 순서로 방문하도록 해서 먼저 순회를 마친 ..
2022.09.19 -
[JS] 트리와 힙의 차이는 뭘까?
힙과 트리는 꽤 비슷한 자료구조 같지만 명확한 차이가 있습니다. 트리를 다뤄야 하는 문제에서 힙을 다뤘을 때 생길 수 있는 문제점에 대해서 기록해보려고 합니다. 1. 힙(Heap) 항상 이진 트리 구조를 구현할 때 관성적으로 heap을 사용하곤 했는데요. heap 구조는 탐색에 적절하진 않습니다. parent node에 대해서 child node가 항상 차 있지 않는 경우가 있기 때문입니다. 주로 heap은 우선 순위 큐의 구현을 위해 사용합니다. [JS] 힙/우선 순위 큐 새로 짜봤습니다. Javascript에서 힙이 필요하면 매번 구현을 해줘야하는 정말.. 험난한 여정이 있는데요. 저번에 제가 대략적으로 공유한 코드가 모든 상황에서 쓰이기 힘들더라구요. 특히 pop에서 최상단 노드부터 dev-russ..
2022.09.18 -
[JS] 섬 연결하기: 크루스칼 알고리즘과 union-find.
새로운 알고리즘이네요.그리디(Greedy) 알고리즘의 일종인 크루스칼(Kruskal) 알고리즘 입니다. 크루스칼 알고리즘 목적: 최소 신장 트리 구하기 주요 기능: Union - Find를 통한 최소 비용외의 간선 삭제 이런 노드들이 있다고 가정하면, 간선 [3 - 4]를 제외한 경로가 비용이 최소가 되는 경로입니다. 이런 경로를 구하는 방법은 다음과 같습니다. 1. 비용의 순서대로 정렬. 2. 해당 노드의 부모를 갱신. 3. 비용 계산으로 진행됩니다. union - find 연산은 node의 부모가 다를때 각 노드의 부모를 갱신해주는 알고리즘입니다. 부모가 같다면 해당 간선으로 사이클이 발생할 수 있기 때문에 부모가 같은 경우는 제외하게 됩니다. 종종 union 연산 시 갱신하는 parent가 최상단의..
2022.09.17 -
[React] url params 변경시 애니메이션 넣기
그냥 클릭할 때 애니메이션 넘기면서 조작하는 거야 아주아주 쉽지만, url params를 바꿀 때 애니메이션과 함께 넘어가는 건 한 번 생각해볼만 하다. 간혹 이런 사이트들이 있다. https://pvoznyuk.github.io/react-update-url-on-scroll/ react-update-url-on-scroll pvoznyuk.github.io 스크롤을 내릴 때 url params가 바뀌는 웹사이트들이 종종 있다. 회사의 소개 페이지나 포트폴리오 관련 페이지들이 종종 그러는데, react-router v5 시절에는 hashRouter를 이용해서 간단하게 구현이 가능했지만.. 이제 없어져버렸다. router 설정도 결국엔 body 태그 하단의 JSXElement를 모두 바꿔주는 역할이기 때..
2022.09.15 -
[JS] 숫자 게임 - 비겼을 때 처리를 해주자!
옛날 문제를 자꾸 풀게 되는데,뭔가 창의력을 요구한달까.. 요즘은 유형이 어느정도 나뉘잖아요. 오히려 접근이 편한데 옛날 문제는 약간 창의력을 보네요.이 문제는 엣지 케이스 처리만 잘해주면 크게 어려운 건 없습니다. (17, 18번이 문제이신 분들은 비겼을 때만 처리해주면 되거든요...!) 문제 요약 xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 하려고 합니다. 두 개의 팀을 각각 A팀과 B팀이라고 하겠습니다. 숫자 게임의 규칙은 다음과 같습니다. 먼저 모든 사원이 무작위로 자연수를 하나씩 부여받습니다. 각 사원은 딱 한 번씩 경기를 합니다. 각 경기당 A팀에서 한 사원이, B팀에서 한 사원이 나와 서로의 수를 공개합니다. 그때 숫자가 큰 쪽이 승리하게 되고, 승리한 사원이 속한 팀..
2022.09.14