Algorithm 17

[알고리즘] 깊이우선탐색(DFS) 과 너비우선탐색(BFS)

수 많은 알고리즘 중 당연히 알고 있어야 하는 기본 알고리즘 중 하나가 DFS와 BFS이다. 오늘은 이 두 가지 알고리즘에 대해 정리를 해보려고 한다. 깊이우선"탐색" 과 너비우선"탐색"과 같이 이 알고리즘은 무언가를 탐색하는 것이다. 그렇다면 무엇을 탐색하는 것일까? 바로 그래프를 탐색하는 알고리즘이다. 그렇다면 그래프란 무엇일까? 그래프 (graph) 그래프는 요소들이 서로 복잡하게 연결되어 있는 관계를 표현하는 자료구조이다. 예를 들어, 지하철 노선도는 많은 역들이 어떻게 연결되어 있는지를 알려주며, 소셜 네트워크 서비스의 인맥 지도는 사람들의 복잡한 친구 관계를 표현한다. 그래프는 선형 자료구조들이나 트리보다 더 일반화 된 자료구조를 제공하고 많은 분야에서 널리 사용되고 있다. 정점과 간선 그래프..

알고리즘 2023.02.21

[알고리즘] 분할 정복 알고리즘 (Divide and Conquer)

❓분할 정복 알고리즘 (Divide and Conquer) 란? 분할 정복(Divide and Conquer) 알고리즘은 여러 알고리즘의 기본이 되는 해결방법으로, 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 방법이다. 대표적인 예로는 정렬 알고리즘 중에서 퀵 정렬이나 합병 정렬과 이진탐색, 선택 문제, 고속 푸리에 변환(FFT) 문제들이 대표적이다. 🔑설계 분할 정복은 상단에서 분할하고 중앙에서 정복하고 하단에서 조합하는 형태로 도식화 할 수 있다. 분할 (Divide) : 문제를 더이상 분할할 수 없을 때까지 동일한 유형의 여러 하위 문제로 나눈다. 정복 (Conquer) : 가장 적은 단위의 하위 문제를 해결하여 정복한다. 조합 (Combine) : 하위 문제에 대한 결과를 ..

알고리즘 2023.01.29

[백준] 9461번 : 파도반 수열 (JAVA)

동적 계획법 관련 문제인 9461번 : 파도반 수열 문제를 풀었다. 동적 계획법에 대해 아직 이해하지 못했다면 다음의 블로그에서 확인하면 된다. https://lucy1215.tistory.com/23 [알고리즘] 동적 계획법 (Dynamic Programming) ❓동적 계획법 (또는 다이나믹 프로그래밍 , DP)란? 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용하는 것으로 특정한 알고리즘이 아닌 하 lucy1215.tistory.com 바로 이전, 동적 계획법 관련 문제는 다음의 블로그에서 확인하면 된다. https://lucy1215.tistory.com/27 [백준] 1904번 : 01타일 (JAVA) 동적 계획법(DP)을 공부한 뒤, DP관..

백준 2023.01.27

[알고리즘] 이진 탐색 (Binary Search)

❓이진 탐색 (또는 이분 탐색, Binary Search) 란? 정렬되어 있는 (이진 탐색의 주요 조건) 배열에서 데이터를 찾으려 시도할 때, 순차탐색처럼 처음부터 끝까지 하나씩 모든 데이터를 체크하여 값을 찾는 것이 아니라 탐색 범위를 절반씩 줄여가며 찾아가는 Search 방법이다. 이진 탐색은 정렬된 리스트에만 사용할 수 있다는 단점이 있지만, 검색이 반복될 때마다 검색 범위가 절반으로 줄기 때문에 속도가 빠르다는 장점이 있다. 👉동작 방식 이진 탐색 알고리즘은 리스트의 중간 값과 비교하여 검색값을 찾는다. 중간 값을 찾아야 하기 때문에 반드시 정렬된 배열에서만 사용할 수 있다. 이진 탐색의 동작 방식은 다음과 같다. 1. 배열의 중간 값을 가져온다. 2. 중간 값과 검색 값을 비교한다. 1. 중간 ..

알고리즘 2023.01.24

[백준] 9184번 : 신나는 함수 실행 (JAVA)

동적 계획법(DP)을 공부한 뒤, DP관련 문제인 9184번 : 신나는 함수 실행을 풀었다. 동적 계획법에 대해 아직 이해하지 못했다면 다음의 블로그에서 확인하면 된다. https://lucy1215.tistory.com/23 [알고리즘] 동적 계획법 (Dynamic Programming) ❓동적 계획법 (또는 다이나믹 프로그래밍 , DP)란? 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용하는 것으로 특정한 알고리즘이 아닌 하 lucy1215.tistory.com 동적계획법(DP)을 이용하여 a,b,c가 주어질 때, 재귀함수 w(a,b,c)를 출력해라. 문제에 코드 식이 많아 복잡해 보이지만 어렵지 않은 문제였다. 그냥 문제의 코드 식을 그대로 사용..

백준 2023.01.12

[알고리즘] 동적 계획법 (Dynamic Programming)

❓동적 계획법 (또는 다이나믹 프로그래밍 , DP)란? 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용하는 것으로 특정한 알고리즘이 아닌 하나의 문제해결 패러다임으로 볼 수 있다. 큰 문제를 작은 문제로 쪼개서 그 답을 저장해두고 재활용한다. 👉DP를 쓰는 이유 사실 일반적인 재귀(Naive Recursion) 방식 또한 DP와 매우 유사하다. 큰 차이점은 일반적인 재귀를 단순히 사용 시 동일한 작은 문제들이 여러 번 반복되어 비효율적인 계산이 될 수 있다는 것이다. 예를 들어 피보나치 수열을 살펴보자. 피보나치 수열은 아래와 같다. 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 141 ... 피보나치 수를 구하고 싶을 때 재귀로..

알고리즘 2023.01.09

[백준] 1874번 : 스택 수열 (JAVA)

드디어 스택 마지막 문제인 1874번 : 스택 수열을 풀었다. 스택에 대해 아직 이해하지 못했다면 다음의 블로그에서 확인하면 된다. https://lucy1215.tistory.com/17 [자료구조] 스택 (Stack) 🚩스택 (Stack)의 개념 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO (Last In First Out) 형식의 자료 구조 ❓스택 (Stack)의 특징 1. 먼저 들어간 자료가 나중에 나옴. LIFO구조 2. 시스템 해킹에서 버퍼오버 lucy1215.tistory.com 바로 앞 문제인 4949번 : 균형잡힌 세상 에 대한 내용은 바로 앞의 블로그에서 확인하면 된다. https://lucy1215.tistory.com/21 [백준] 4949번 : 균형잡힌 세상 (JAVA) 점점..

백준 2023.01.09

[백준] 4949번 : 균형잡힌 세상 (JAVA)

점점 스택 관련 문제 막바지에 다다른다. 4번째 문제인 4949번 : 균형잡힌 세상 을 풀었다. 스택에 대해 아직 이해하지 못했다면 다음의 블로그에서 확인하면 된다. https://lucy1215.tistory.com/17 [자료구조] 스택 (Stack) 🚩스택 (Stack)의 개념 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO (Last In First Out) 형식의 자료 구조 ❓스택 (Stack)의 특징 1. 먼저 들어간 자료가 나중에 나옴. LIFO구조 2. 시스템 해킹에서 버퍼오버 lucy1215.tistory.com 바로 앞 문제인 9012번 : 괄호 에 대한 내용은 바로 앞의 블로그에서 확인하면 된다. https://lucy1215.tistory.com/20 [백준] 9012번 : 괄호 ..

백준 2023.01.09

[백준] 9012번 : 괄호 (JAVA)

스택 관련 5문제 중 벌써 3번째 문제인 9012번 : 괄호 문제를 풀었다. 스택에 대해 아직 이해하지 못했다면 다음의 블로그에서 확인하면 된다. https://lucy1215.tistory.com/17 [자료구조] 스택 (Stack) 🚩스택 (Stack)의 개념 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO (Last In First Out) 형식의 자료 구조 ❓스택 (Stack)의 특징 1. 먼저 들어간 자료가 나중에 나옴. LIFO구조 2. 시스템 해킹에서 버퍼오버 lucy1215.tistory.com 바로 앞 문제인 10773번 : 제로 에 대한 내용은 바로 앞의 블로그에서 확인하면 된다. https://lucy1215.tistory.com/19 [백준] 10773번 : 제로 (JAVA) 10..

백준 2023.01.09

[백준] 10773번 : 제로 (JAVA)

10828번 : 스택에 이어서 다음 스택 관련 문제인 10773번 : 제로 문제를 풀었다. 스택에 대해 아직 이해하지 못했다면 다음의 블로그에서 확인하면 된다. https://lucy1215.tistory.com/17 [자료구조] 스택 (Stack) 🚩스택 (Stack)의 개념 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO (Last In First Out) 형식의 자료 구조 ❓스택 (Stack)의 특징 1. 먼저 들어간 자료가 나중에 나옴. LIFO구조 2. 시스템 해킹에서 버퍼오버 lucy1215.tistory.com 바로 앞 문제인 10828번 : 스택 에 대한 내용은 바로 앞의 블로그에서 확인하면 된다. https://lucy1215.tistory.com/18 [백준] 10828번 : 스택 (..

백준 2023.01.09