본문 바로가기

반응형

2021/06

(12)
탐색 알고리즘 BFS 너비 우선 탐색 [코딩 테스트, 코딩 면접 준비] BFS(Breath First Search)란? 너비 우선 탐색이라고도 부르며, 가까운 노드부터 탐색하는 알고리즘이다. DFS(Depth First Search)는 최대한 멀리 있는 노드를 우선으로 탐색하는 방식으로 BFS는 그 반대이다. BFS 구현에서는 선입선출 방식인 큐 자료구조를 이용하는 것이 정석이다. 인접한 노드를 반복으로 큐에 넣도록 알고리즘을 작성하면 자연스럽게 먼저 들어온 것이 먼저 나가게 되어, 가까운 노드부터 탐색을 진행하게 된다. 탐색 시작 노드를 큐에 삽입하고 방문 처리를 한다. 큐에서 노드를 꺼내 해당 노드의 인접 노드 중에서 방문하지 않은 노드를 모두 큐에 삽입하고 방문 처리 한다. 2번의 과정을 더 이상 수행할 수 없을 때까지 반복한다. 아래와 같은 그래프를 예를 들어 노드 ..
[게임 데이터 및 마케팅] 용어 정리 DAU / UV / ROAS 게임 데이터 및 마케팅의 기초인 몇 가지 용어 및 개념에 대해서 정리 [ 게임 데이터 ] UV (Unique Visitor) : 유니크 유저 수 RU (Register User) : 전체 게임 가입 유저 수 NRU (New Registered User) : 신규 유저 수 DAU (Daily Active User) : 일 단위로 측정한 UV WAU (Weekly Active User) : 주 단위로 측정한 UV MAU (Monthly Active User) : 월 단위로 측정한 UV MCU (Maximum Current User) : 하루 중 가장 높은 동시 접속자 수치 RealDAU (Real Daily Active User) : 일 단위로 측정한 게임 플레이 타임이 5분 이상인 UV (게임 회사마다 플..
[탐색 알고리즘 DFS 깊이 우선 탐색] 예제 자바 코드 (코딩 테스트, 코딩 면접 준비) 탐색 알고리즘 DFS 깊이 우선 탐색 개념 정리는 아래 링크 참조 https://developercc.tistory.com/10 탐색 알고리즘 DFS 깊이 우선 탐색 [코딩 테스트, 코딩 면접 준비] DFS(Depth-First Search)란? 깊이 우선 탐색이라고도 부르며, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. DFS 알고리즘은 특정한 경로로 탐색하다가 특정한 상황에서 최대한 깊숙이 들 developercc.tistory.com DFS 알고리즘 예제 [문제] N * M 크기의 얼음 틀이 있다. 구멍이 뚫려 있는 부분은 0, 칸막이가 존재하는 부분은 1로 표시된다. 구멍이 뚫려 있는 부분끼리 상, 하, 좌, 우로 붙어 있는 경우 서로 연결되어 있는 것으로 간주한다. 이때 얼음 틀의 ..
탐색 알고리즘 DFS 깊이 우선 탐색 [코딩 테스트, 코딩 면접 준비] DFS(Depth-First Search)란? 깊이 우선 탐색이라고도 부르며, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. DFS 알고리즘은 특정한 경로로 탐색하다가 특정한 상황에서 최대한 깊숙이 들어가서 노드를 방문한 후, 다시 돌아가 다른 경로로 탐색하는 알고리즘이다. 탐색 시작 노드를 스택에 삽입하고 방문 처리를 한다. 스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣고 방문 처리를 한다. 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼낸다. 2번 과정을 더 이상 수행할 수 없을 때까지 반복한다. '방문 처리'는 스택에 한 번 삽입되어 처리된 노드가 다시 삽입되지 않게 체크하는 것을 의미한다. 방문 처리를 함으로써 각 노드를 한 번씩만 처리할..
탐욕 (그리디) 알고리즘 [코딩 테스트, 코딩 면접 준비] 탐욕 (Greedy) 알고리즘이란? 단순하지만 강력한 문제 해결 방법이다. 어떠한 문제가 있을 떄 단순 무식하게, 탐욕적으로 문제를 해결하는 알고리즘이다. 즉 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미한다. 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다. 탐욕 알고리즘 예제 [문제] 당신은 음식점의 계산을 도와주는 점원이다. 카운터에서 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정한다. 손님에게 거슬러 줘야 할 돈이 N원일때 거슬러줘야 할 동전의 최소 개수를 구하라, 단, 거슬러 줘야 할 돈은 N의 항상 10의 배수이다. [문제 해설] 그리디 알고리즘을 이용해 해결 할 수 있는 대표적인 문제이다. 가장 큰 화폐 단위부터 돈을 거슬러 주..
[Tomcat Error] start: org.apache.catalina.LifecycleException 사내 플랫폼 ZUUL 인증서버에서 아래와 같은 에러가 발생했다... 18-Jun-2021 18:13:40.108 SEVERE [localhost-startStop-2] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/backup]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) at ..
[Java SpringBoot] Retrofit2 연동 및 사용법 예제 Retrofit이란? Retrofit은 HTTP API를 자바 인터페이스 형태로 사용할 수 있는 라이브러리이다. HTTP REST API 형태를 통해 서버와 서버 또는 서버와 클라이언트 간에 서로 정보를 교환 할 수 있다. 스프링부트(SpringBoot) 프로젝트에서 Retrofit 시작하기 먼저 SpringBoot 프로젝트에서 Retrofit 사용을 위해서는 몇가지 의존성을 추가해야한다. Maven 프로젝트일 경우 pom.xml에 아래와 같이 추가한다. com.squareup.retrofit2 retrofit 2.9.0 com.squareup.retrofit2 converter-jackson 2.9.0 com.squareup.retrofit2 converter-gson 2.9.0 com.squareup..
자바(JAVA) 버전 별 특징 및 차이 일부 Java 버전을 1.X라고 하는 이유 9이전의 Java버전은 단순히 다른 이름 체계를 가졌다. 따라서 Java8은 1.8 Java5는 1.5 등으로 불렸다. Java9부터 시간 기반 릴리즈로 전환하면서 명명 체계도 변경되었다. 사실 큰 이유는 없는 것 같다. JDK 7 (2011) Switch문 인자로 String 허용 자동으로 finally에서 리소스 관리(close) 제네릭 인스턴스 생성시 type 생략가능 // 7 버전 이전 List list = new ArrayList(); //7 버전 이후 List list2 = new ArrayList(); JDK 8 (2014) 람다 표현식 다양한 DateTime 추가 인터페이스에서 default, static 키워드 사용하여 메소드 구현 가능 Null..

반응형