[Java / 알고리즘] 그래프 알고리즘 BFS와 DFS
·
알고리즘 & 코딩 테스트/알고리즘
대표적인 그래프 탐색 알고리즘으로는 너비 우선 탐색(BFS, Breadth First Search)과 깊이 우선 탐색(DFS, Depth First Search)가 있다. 1. 너비 우선 탐색 (BFS, Breadth First Search) 정점들과 같은 레벨에 있는 노드들(형제 노드들)을 먼저 탐색하는 방식이다 위 그림에서는, A - B - C - D - G - H - I - E - F - J 순으로 탐색한다 BFS는 재귀적으로 동작하지 않고 방문한 노드들을 차례로 저장한 후 꺼낼 수 있는 큐(Queue)를 사용한다 즉, 선입선출(FIFO) 원칙을 탐색한다 시작 정점으로부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하기 때문에 두 노드 사이의 최단 경로를 찾을 때 주로 사용한다..
[Java / 알고리즘] 탐색 알고리즘. 순차 탐색(선형 탐색), 이진 탐색
·
알고리즘 & 코딩 테스트/알고리즘
탐색이란 여러 데이터 중에서 원하는 데이터를 찾아내는 것을 말한다. 1. 순차 탐색(Sequential Search), 선형 탐색(Linear Search) 순차 탐색 또는 선형 탐색이라고 한다. 데이터가 담겨있는 리스트를 앞에서부터 하나씩 비교해서 원하는 데이터를 찾는 방법이다. [ 코드 ] public class main { public static void main(String[] args) { int[] array = {23, 45, 12, 67, 89, 34, 56, 72}; int target = 34; // 선형 탐색을 수행하고 결과를 출력 int result = linearSearch(array, target); if (result == -1) { System.out.println("Ele..
[Java / 알고리즘] 대표적인 정렬 알고리즘. 버블 정렬, 삽입 정렬, 선택 정렬
·
알고리즘 & 코딩 테스트/알고리즘
정렬 알고리즘은 n개의 숫자가 입력으로 주어졌을 때, 이를 사용자가 지정한 기준에 맞게 정렬하여 출력하는 알고리즘이다. 예를 들어 n개의 숫자가 저장되어있는 배열을, 오름차순의 조건으로 작성하여 입력하면 오름차순으로 정렬된 배열을 출력으로 구할 수 있다. 정렬 알고리즘은 정말 다양한데, 이에 따라 각각의 수행시간도 천차 만별이다. 1. 버블 정렬(Bubble Sort) 두 인접한 데이터를 비교해서, 앞에 있는 데이터가 뒤에 있는 데이터보다 크면, 자리를 바꾸는 방식이다. [ 코드 ] static void bubbleSort(int[] arr) { int n = arr.length; for (int i = 0; i < n - 1; i++) { boolean swap = false; for (int j = ..
[Java / 코딩테스트] 청소 문제
·
알고리즘 & 코딩 테스트/Java로 푼 코딩 테스트
1. 생각 일단 k번 반복해야 한다. -> for(k) 초기위치 (0,0) 방향 0 : 오른쪽 1 : 아래 2 : 왼쪽 3 : 위 조건에 따라 이동 2. 생각대로 코딩 [ 코드 ] public int[] solution(int[][] board, int k){ int[] answer = new int[2]; //초기화 answer[0] = 0; answer[1] = 0; int direction = 0; for (int i = 0; i < k; i++) { boolean change = false; //방향전화 변수 // 넘어가면 방향 전환 if (direction == 0 && answer[1] == board.length-1) {change = true;} if (direction == 1 && an..
[Java / 코딩테스트] 사다리타기
·
알고리즘 & 코딩 테스트/Java로 푼 코딩 테스트
1. 생각 일단 n번 반복해야 한다. -> for(n), 임시값 만들기 ladder[i][j]에 값이 포함되면, 오른쪽으로 이동, 임시값 +1 ladder[i][j]+1에 값이 포함되면, 왼쪽으로 이동, 임시값 -1 임시값 -> 문자(A,B,C,D,E...)로 변경 2. 생각대로 코딩 [ 코드 ] import java.util.*; public class Problem01 { public char[] solution(int n, int[][] ladder){ char[] answer = new char[n]; int[] temps = new int[n]; for (int i = 1; i < n+1; i++) { int temp = i; for (int j = 0; j < ladder.length; j++..
[프로그래머스 / Java] 개인정보 수집 유효기간
·
알고리즘 & 코딩 테스트/Java로 푼 코딩 테스트
📍 생각대로 코딩 모든 달이 28일까지 있다고 가정하므로 Date format의 날짜 계산을 다르게 해야한다. import java.util.*; import java.text.*; class Solution { public int[] solution(String today, String[] terms, String[] privacies) { ArrayList answer_list = new ArrayList(); HashMap terms_map = new HashMap(); for(int i=0; i
마볼링
'알고리즘 & 코딩 테스트' 카테고리의 글 목록 (3 Page)