본문 바로가기

Algorithm

(72)
[PS] getline함수 간단하게 보기 개요해당 카테고리에서는 코딩 문제를 풀 때 사용했던 간단한 방법에 대해 알아보겠다. 사실 대부분 검색하면 바로 나올정도로 간단한 내용들이지만, 실제 코딩 테스트 등에서 인터넷 검색을 허락하지 않기 때문에 방법을 외울 필요도 있다. 따라서 외울 겸 정리하겠다. (매우 간단하게) (C++ 문법에 따라) 이번에는 getline함수에 대해 알아보겠다.getlinegetline함수는 std namespace에 있는 함수이다.입력 스트림을 읽어 문자열을 추출하는 함수이다._EXPORT_STD template basic_istream& getline( basic_istream&& _Istr, basic_string& _Str, const _Elem _Delim) { // get characters int..
[알고리즘 알아보기] JPS(Jump Point Search) 개요JPS알고리즘은 A*의 단점인 많은 노드 생성을 극복하는 알고리즘입니다.https://basaeng.tistory.com/77 [알고리즘 알아보기] A* 알고리즘 알아보기개요A*알고리즘은 최적의 경로를 찾는 알고리즘입니다. 비슷한 알고리즘으로는 다익스트라 알고리즘이 있는데 이를 개선, 확장한 알고리즘입니다.이 포스팅에서는 2차원을 한정해서 알아보겠basaeng.tistory.comA*알고리즘 구현에서 보았듯이, A*는 f값을 기준으로 다음에 openlist에서 pop할 노드를 선정하지만, 선정한 노드의 주변 8방에 대해 (방문하지 않았거나 f값이 개선된 경우) 노드를 생성해 openlist에 추가합니다. JPS는 노드의 생성을 Jump Point를 찾아 해당 포인트에만 생성합니다.Jump Point..
[알고리즘 알아보기] Cellular Automata 맵 만들기 https://basaeng.tistory.com/77 [알고리즘 알아보기] A* 알고리즘 알아보기개요A*알고리즘은 최적의 경로를 찾는 알고리즘입니다. 비슷한 알고리즘으로는 다익스트라 알고리즘이 있는데 이를 개선, 확장한 알고리즘입니다.이 포스팅에서는 2차원을 한정해서 알아보겠basaeng.tistory.com 개요길을 찾는 다는 것은 맵이 있어야 완성됩니다.허허벌판에서만 움직인다면 복잡한 길찾기 알고리즘은 필요없겠죠. 따라서 길찾기 알고리즘을 제대로 테스트해보기 위해서는 랜덤한 맵이 필요할 것입니다. 이번에는 맵을 만드는 알고리즘 중에서도 Cellular Automata방식을 알아보도록 하겠습니다.콘웨이의 생명 게임Cellular Automata방식은 콘웨이의 생명 게임을 기반으로 만들어진 방식입니다...
[알고리즘 알아보기] A* 알고리즘 알아보기 개요A*알고리즘은 최적의 경로를 찾는 알고리즘입니다. 비슷한 알고리즘으로는 다익스트라 알고리즘이 있는데 이를 개선, 확장한 알고리즘입니다.이 포스팅에서는 2차원을 한정해서 알아보겠습니다. 다익스트라 알고리즘은 2차원 평면에서 거리 기반으로 값을 계산하게 되는데 이는 그리드가 크면 클수록 시간, 메모리가 낭비되는 문제가 생깁니다. A*알고리즘은 목적지에 도달할 가능성이 높은 위치로 노드를 확장해 계산 회수를 줄입니다.이 알고리즘은 Shakey로봇의 주행을 위해 고안되었다고 합니다.https://en.wikipedia.org/wiki/Shakey_the_robot Shakey the robot - WikipediaFrom Wikipedia, the free encyclopedia General-purpos..
[알고리즘 알아보기] AVL 트리 개요https://basaeng.tistory.com/74 [알고리즘 알아보기] 이진 탐색 트리(Binary Search Tree)개요이진 탐색 트리에 대해서 알기 위해서는 그래프, 트리에 대한 이해가 필요하지만 이번에는 알고있다고 생각하고 이진 트리부터 설명하겠습니다. 이진트리란?이진트리는 노드에 연결된 childbasaeng.tistory.com이전의 BST는 삽입 시 항상 정렬에 맞게 리프노드에 삽입되기 때문에 최악의 경우 한쪽으로 몰려있는 형태가 나올 수 있었습니다. AVL트리는 "노드의 밸런스" 라는 개념을 사용해 탐색 시 항상 O(log n)의 복잡도를 지킬 수 있도록 BST를 개선합니다. 노드의 밸런스라는 것은 좌측 자식의 높이 - 우측 자식의 높이로 계산합니다.또한 노드의 높이는 max(..
[알고리즘 알아보기] 이진 탐색 트리(Binary Search Tree) 개요이진 탐색 트리에 대해서 알기 위해서는 그래프, 트리에 대한 이해가 필요하지만 이번에는 알고있다고 생각하고 이진 트리부터 설명하겠습니다. 이진트리란?이진트리는 노드에 연결된 child node가 최대 2개인 트리입니다.노드에 연결된 좌측 노드를 left child node, 우측 노드를 right child node라고 많이 표현합니다. template class Node{ T data; Node *left, *right;}간단하게는 위와 같은 구조를 띕니다. 이진탐색트리란?이진 탐색 트리(이하 BST)는 이진 트리의 하위 집합으로parent node의 data value는 좌측 child node의 data보다 크며 우측 child node의 data보다 작아야한다는 조건이 필요합니다...
[프로그래머스] 메뉴 리뉴얼 풀어봄 https://school.programmers.co.kr/learn/courses/30/lessons/72411 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 단품메뉴들의 조합을 만드는 문제이다.직접적으로 조합을 사용해야 함을 언급한거 보니 조합을 써야겠다고 생각했다. python같은 경우는 조합이 기본적으로 제공되지만 나는 java를 사용하기 때문에 직접 구현해보자  Map counting; int count = 0; public String[] solution(String[] orders, int[] course) { List list = new ArrayList();..
[프로그래머스] 동영상 재생기 풀어봄 https://school.programmers.co.kr/learn/courses/30/lessons/340213 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 동영상 재생기 문제는 3가지 기능을 지원한다.이를 보아 3가지 기능을 구현하는 것이 주된 풀이법이라고 생각했다. 기능 1. prev 입력 시 10초 전으로 이동, 위치가 10초 미만인 경우 처음으로 이동 (0분 0초)기능 2. next 입력 시 10초 후로 이동, 남은 시간이 10초 미만인 경우 끝으로 이동 (동영상의 길이와 같음)기능 3. 현재 재생 위치가 오프닝 구간(op_start 이상 && op_end 이하)인 경우 자동으로 op_en..