All-round developer 10

[응용] DFS와 2차원 배열 내 영역의 최대 개수 구하기

1. 개요DFS 알고리즘을 적용한 문제 유형으로 2차원 배열에 포함된 특정 영역의 최대 개수를 구하는 문제가 많이 출제된다.아래 두 문제를 풀어보며 이러한 문제 유형에 대해 이해하게 되어, 그 내용을 정리해보려고 한다. 이 글에서는 내가 이해한 개념을 자세하게 풀어서 정리하고, 관련 문제의 코드도 함께 살펴 볼 예정이다.  단, 이 글은 DFS 알고리즘에 대해 이해하고 있다는 가정 하에 설명을 진행한다.만약 DFS 알고리즘의 개념이나 원리를 잘 모른다면 아래 글을 참고하기를 추천한다.https://developer-zoyh.tistory.com/17 [알고리즘] DFS(Depth-First Search)와 BFS(Breadth-First Search)0. IntroductionDFS와 BFS를 별도 게시..

[알고리즘] DFS(Depth-First Search)와 BFS(Breadth-First Search)

0. IntroductionDFS와 BFS를 별도 게시물로 정리하려고 했으나 결국 하나의 게시물로 정리하게 되었다.둘은 이름이 비슷해서인지 잘 헷갈리는 것 같다.같은 게시물 안에서 동일한 그래프로 비교하면서 보면 더 잘 이해할 수 있을 것이라고 판단하였다.단, BFS, DFS 문제풀이는 본 게시물에서 다루지 않는다. 앞으로 DFS, BFS 문제를 공부하면서 차근차근 하나씩 추가해보겠다. 1. DFS (Depth-First Search, 깊이 우선 탐색)1. 정의이름에서 알려주는 것처럼 깊이를 우선적으로, 즉, 가장 깊이 위치하는 노드까지 탐색하는 알고리즘이다.DFS 문제를 풀 때는 스택을 활용하면 더 쉽게 해결할 수 있다.이것은 예시를 보면 더욱 잘 이해할 수 있으니 예시를 함께 보면서 확인하도록 하자...

[자료구조] 그래프(Graph)와 탐색(Search)

🌱 그래프 그래프는 노드와 간선으로 이루어진 자료 구조이다. 크게 노드와 엣지(간선)으로 구성되어 있다.그래프는 간선으로 연결된 노드들 간 이동할 수 있는데, 이렇게 간선으로 연결된 노드들을 인접하다(Adjacent)고 한다.  🌱 그래프 표현 방법그래프에서 인접한 노드들간의 관계를 나타내는 방법으로 크게 인접 행렬(Adjacency matrix)과 인접 리스트(adjacency list)가 있다.1. 인접 행렬인접 행렬은 단어 그대로 "행렬"의 형태로 인접한 노드 간의 관계를 나타낸 것을 의미한다.행의 노드와 열의 노드 간의 거리를 행렬값으로 확인할 수 있다. 따라서 인접한 노드 조회를 할 때 시간 측면에서 O(1)로 아주 빠르다.그러나 이 방식은 메모리 측면에서 비효율성을 야기할 수 있기에 조심해..

[자료구조] 스택(stack)과 큐(queue)

🌱 스택 (Stack)1. 기본 개념스택은 기본적으로 LIFO(Last In First Out), 혹은 선입후출 구조라고 한다. 즉, 나중에 들어간 것이 맨 처음 나온다. 다시 말 하면 처음 들어간 것이 맨 뒤에 나오는 구조이다. 동굴을 떠올리면 스택 구조를 쉽게 상상할 수 있다.2. 이상 상태스택은 고정된 크기를 갖는 자료구조이다. 따라서 고정된 크기에서 벗어나는 액션을 취할 때 두 가지 이상 상태를 가질 수 있다.1. 오버플로우(Overflow): 자료구조가 수용 가능한 범위를 가득 채운 상태해서, 초과하여 삽입 연산을 수행하려고 할 때 발생하는 현상2. 언더플로우(Underflow): 자료구조에 데이터가 들어 있지 않은 상태에서 삭제 연산을 수행하려고 할 때 발생하는 현상* 예전에는 위 두 용어가..

[알고리즘] 구현(Implementation)

정의: 넓게는 알고리즘을 소스 코드로 바꾸는 것을 의미한다. 좁게는 문제에서 제시하는 제약 조건들에 대해 문법 및 라이브러리를 활용하여 꼼꼼하게 풀어내는 것을 의미한다.대표 예시- 완전 탐색: 문제에서 나올 수 있는 모든 경우의 수에 대해 계산하는 문제 유형- 시뮬레이션: 문제를 해결하기 위하여 각 절차를 한 단계씩 순차적으로 해결해나가는 문제 유형주의사항: 입력 조건이 자세하게 명시되며 문제의 길이가 긴 편이다.참고: 파이썬은 C, C++, JAVA에 비해 난이도가 낮은 반면 속도가 느리다는 단점이 있다. 이를 개선하기 위해 코딩 테스트 시 개발 환경에 PyPy를 지원한다면 PyPy를 선택하자. (실행 속도가 더 빠름)

[알고리즘] 단순 무식한 그리디(Greedy) 알고리즘

정의: 매 시점에 가장 좋은 선택지를 고르는 방식으로, 현재의 선택이 미래에 미칠 영향을 고려하지 않는 알고리즘이다.* 욕심쟁이 알고리즘 혹은 탐욕법이라고도 불린다.필요 역량: 창의력 / 문제를 풀기 위한 아이디어를 떠올릴 수 있는 능력특이 사항: 문제에서 기준이 제시될 가능성이 높으며 정렬 알고리즘과 함께 사용되는 경우가 많다.주의 사항: 그리디 알고리즘을 적용한 해법이 정당한지 검토하는 과정 필요 (반례 탐색 등)

[개념] 복잡도(Complexity)

이미지 출처: https://www.scholarhat.com/tutorial/datastructures/complexity-analysis-of-data-structures-and-algorithms 정의: 알고리즘의 성능을 나타내는 척도종류: 시간 복잡도, 공간(메모리) 복잡도* 일반적으로 복잡도라고 하면 시간 복잡도를 의미한다.표기 방법: 빅오 표기법* 빅오(Big-O) 표기법이란, 구현한 알고리즘을 시간 혹은 메모리에 대한 함수로 나타낸 후, 그 함수의 상한만을 고려한 표기방식이다.주의 사항: 소스 코드를 정확히 분석하여 복잡도를 계산하여야 한다. 만약 내부적으로 함수를 호출한다면 내부 함수도 복잡도를 계산해주어야 한다.코딩 테스트 시 제한 기준 (일반적인 상황)- 시간 복잡도: 1초, O(N^3..

[K8S][CKA] Cyber Monday로 CKA 자격증 약 30만원 할인 받기! ($395 -> $198)

지난 번 포스팅에서 소개했던 CKA의 Cyber Monday 할인이 시작되었다.* 지난 포스팅 참고: https://developer-zoyh.tistory.com/2 [CKA] Cyber Monday를 통해 60% 할인 받기엔지니어링 분야를 공부하고 또 취업을 준비하면서, 가장 많이 보이는 키워드는 "쿠버네티스(Kubernetes)" 일 것이다.초심자가 처음 개념을 접할 때 가장 좋은 공부법은 자격증을 준비해보는 것이developer-zoyh.tistory.com   기간은 2024년 12월 2일 월요일부터 동년도 12월 10일 화요일까지, 총 9일간 진행된다.60%로 예상했으나 2024년 사이버 먼데이에서 CKA 자격증의 경우 50%를 받을 수 있다.   198달러라고 되어 있으나, 실제 결제 페이지..

[K8S][CKA] 시험 정보 및 시험 준비 방법 정리

1. CKA란CKA란 Certified Kubernetes Administrator로, 쿠버네티스 관리자 역량을 확인하는 시험이다.쿠버네티스 설치 및 운영을 잘 수행하는지 확인한다. https://www.cncf.io/training/certification/cka/ Certified Kubernetes Administrator (CKA)The Certified Kubernetes Administrator (CKA) program was created by the Cloud Native Computing Foundation (CNCF), in collaboration with The Linux Foundation, to help develop the Kubernetes ecosystem.www.cncf...

[K8S][CKA] Cyber Monday를 통해 60% 할인 받기

엔지니어링 분야를 공부하고 또 취업을 준비하면서, 가장 많이 보이는 키워드는 "쿠버네티스(Kubernetes)" 일 것이다.초심자가 처음 개념을 접할 때 가장 좋은 공부법은 자격증을 준비해보는 것이라고 생각하기에, 나는 CKA 자격증을 준비해보기로 마음을 먹었다. CKA 라는 자격증은 풀 네임으로 Certified Kubernetes Administrator, 즉 쿠버네티스 관리자의 역량을 확인하는 시험이다.쿠버네티스를 설치할 수 있는지, 쿠버네티스 환경에서 어플리케이션을 동작 시키거나 네트워크 환경을 구축할 수 있는 지 등에 대해 확인한다. 구체적인 시험에 대한 정보는 아래 CNCF 라는 사이트에서 확인할 수 있다.https://www.cncf.io/training/certification/cka/ C..