본문 바로가기

전체 글

(53)
[JAVA] DFS Flood fill 구현 class Solution { @Test public void solution() { // 5, 5 영역 int[][] board = new int[][] { {0,0,0,0,0}, {0,0,0,1,1}, {0,0,0,1,0}, {1,1,1,1,0}, {0,0,0,0,0} }; DFS_Flood_Fill(board, 1, 1, 3); for(int i = 0; i < board.length; i++) { for(int j = 0; j < board[i].length; j++) { System.out.print(board[i][j] + " "); } System.out.println(""); } } /** * 다차원 배열의 특정 칸과 연결된 영역을 검색하는 알고리즘. * 그림판의 채우기와 같은 기능. * ..
[JAVA] BFS 최단거리 구현 class Solution { @Test public void solution() { int[][] graph = new int[][] { {0,0,0,0,0}, {0,1,1,1,1}, {0,0,0,0,0}, {1,1,1,1,0}, {0,0,0,0,0}, }; 최단경로(graph, 0, 1, 4, 2); } /** * BFS를 활용해 최단경로를 구하기 위한 방법 * @param board 2차원 배열. (값이 0인 영역만 이동하도록 구성됨, 1은 벽) * @param sr - 시작 row * @param sc - 시작 col * @param er - 도착지 row * @param ec - 도착지 col */ void 최단경로(int[][] board, int sr, int sc, int er, int e..
[JAVA] BFS 큐 구현 import java.util.*; class Solution { int n = 5; @Test public void solution() { int[][] graph = new int[n][6]; graph[0][1] = graph[1][0]= 1; graph[0][2] = graph[2][0] = 1; graph[1][3] = graph[3][1] = 1; graph[1][4] = graph[4][1] = 1; graph[2][4] = graph[4][2] = 1; graph[3][4] = graph[4][3] = 1; bfs(graph, 0); } /** * @param graph - 그래프 * @param node - 시작 노드 */ void bfs(int[][] graph, int node) { ..
[JAVA] DFS 재귀 호출 구현 import java.util.*; class Solution { /** * * @param n - 노드의 수 * @param graph - 노드간의 간선이 표현된 그래프 */ @Test public void solution() { int n = 5; int[][] graph = new int[5][6]; graph[0][1] = graph[1][0]= 1; graph[0][2] = graph[2][0] = 1; graph[1][3] = graph[3][1] = 1; graph[1][4] = graph[4][1] = 1; graph[2][4] = graph[4][2] = 1; graph[3][4] = graph[4][3] = 1; dfs(0, graph, new boolean[5]); } public v..
[JAVA] DFS Stack 구현 import java.util.*; class Solution { int n = 5; /** * 스택 구조이므로 DFS의 반대 순서로 동작한다. (간선에 방향이 없어야하며, 동일하게 연결되어야한다.) * @param n - 노드의 수 * @param graph - 노드간의 간선이 표현된 그래프 */ @Test public void solution() { int[][] graph = new int[n][6]; graph[0][1] = graph[1][0]= 1; graph[0][2] = graph[2][0] = 1; graph[1][3] = graph[3][1] = 1; graph[1][4] = graph[4][1] = 1; graph[2][4] = graph[4][2] = 1; graph[3][4] = ..
IntelliJ 라이브 템플릿 기능 사용하기 IntelliJ를 사용하고 반복적인 패턴의 코드를 작성한다? 이 두 가지 조건을 만족한다면 라이브 템플릿을 사용해보는 걸 추천합니다. 라이브 템플릿은 특정 키워드를 입력 시 자동으로 코드가 완성되는 시스템입니다. 대표적으로 sout이 있습니다. sout -> System.out.println(); File -> setting -> Editor -> Live Templates 이동 시 아래의 화면이 나옵니다. 1. 우측 상단의 + 모양을 클릭 후 TemplateGroup을 클릭 2. 원하는 그룹 명을 지정하고 확인 3. 그룹을 지정하고 다시 우측 상단의 + 모양 클릭 후 Live Template 클릭 4. 원하는 이름, 설명, 내용을 작성 5. 하단의 Change를 클릭 후 원하는 언어를 지정. 끝 옵션 ..
React-Native-Camera Face 정보가 반환되지 않는 문제 React Native 프로젝트 진행 중 얼굴인식 기능이 필요해서 react-native-camera:3.43.6을 설치했습니다. IOS, Android 두 기종에서 얼굴의 위치정보를 얻어 얼굴 영역만 이미지로 얻어야 했습니다. 문제 얼굴 인식은 Firebase의 ML 데이터를 사용하는 것 같은데, 이게 여러 이슈를 발생시켰습니다. RNCamera에 faceDetectionMode를 설정하면 ref.takePictureAsync() 함수를 호출했을 때 faces 정보가 함께 반환됩니다. 문제는 개발하던 중간부터 faces 정보가 반환되지 않았을 때였는데, IOS 쪽은 반환이 잘되는 상황이었습니다. 해결 ref.takePictureAsync 함수를 호출할 때 options 인자를 넘길 수 있었습니다. 당황..
2021 카카오 코테 문제 - 광고삽입 [Kotlin] 2021 카카오 코드 테스트의 5번 문제 광고 삽입 대한 풀이입니다. 문제에 대한 설명과 풀이는 kakao Tech에서 확인할 수 있으며, 이 포스트에서는 kotlin으로 문제를 해결하는 방법을 작성하겠습니다. 입력값 play_time:String = 동영상의 총길이를 "HH:MM:SS" 형식으로 나타낸 문자열 adv_time:String = 광고 영상의 총길이를 "HH:MM:SS" 형식으로 나타낸 문자열 logs:Array = 시청자들의 누적 재생시간을 "HH:MM:SS-HH:MM:SS" 형식으로 나타낸 배열 출력 결과 answer:String = 광고 영상 삽입 시 최고 누적 재생시간의 시작시간을 "HH:MM:SS" 형식으로 나타낸 문자열 설명 광고 영상을 어느 시간에 삽입해야 시청자의 누적 재생시간..