본문 바로가기

전체 글

그래프 탐색 완벽 가이드: 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS) 안녕하세요, 스터디 6주 차입니다. 그래프에 대해 알아보고, 그래프를 탐색하는 방법 중 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS)을 이야기해보겠습니다. 그래프 자료구조와 탐색 방법은 코딩테스트에서 가장 중요한 빈도로 출제를 차지하고 있죠. 도움이 되었으면 좋겠습니다. 같이 시작해 보시죠 😊1. 그래프(Graph) 자료구조가 뭐야? 그래프(Graph)는 정점(Vertex)와 Edge(간선)로 구성된 비선형 자료구조를 말합니다.정점은 데이터를 나타내고, 간선은 정점 간의 관계를 표현합니다. 이를 통해 다차원적인 데이터를 효율적으로 표현할 수 있죠.그래프는 현실 세계의 복잡한 관계를 모델링할 때 유용한 구조입니다. 예를 들어, 지도에서 도시 간의 거리를 나타내거나 소셜 네트워크의 친구 관계 등을 그.. 더보기
전략(Strategy) 패턴: 필요한 전략을 선택하는 유연한 방법 최근에 헤드퍼스트 디자인패턴이라는 책을 읽으면서, 디자인 패턴을 정리해보려 합니다.제가 생각하는 디자인패턴의 가장 좋은 점은 내 코드를 다른 동료들에게 좀 더 잘 알려줄 수 있는 표현이라는 점인데요.그중 GOF 디자인 패턴에 속한 패턴들에 대해서 헤드퍼스트 디자인패턴 책에서 소개하는 순서로 정리해 보겠습니다. 같이 공부하시죠 :) 전략 패턴을 내가 이해한대로 정의해보자. 전략패턴은 객체의 행위를 캡슐화하여 런타임시에 행위를 동적으로 변경할 수 있도록 설계하는 패턴풀어서 설명하면, 객체에서 어떤 일을 수행하는 방법이 여러 가지 일때, 변화하는 부분(행위)을 분리하여 인터페이스로 정의(캡슐화)하고 객체에 구성(컴포지션)으로 추가하여 여러가지 행위의 구현체를 만들어 필요에 따라서 선택할 수 있도록 하는 것입니.. 더보기
Union-Find로 배우는 집합(Set) 알고리즘: 개념부터 구현까지 안녕하세요, 스터디 5주차입니다. 이번에는 집합 알고리즘에 대해서 어떻게 표현하는지와 구현하는 방법을 알아보려고 합니다. 도움이 되는 글이었으면 좋겠습니다. 😄1. 집합(Set)의 정의에 대해 알아보면...수학에서 집합(Set)은 어떤 명확한 조건을 만족시키는 서로 다른 대상들의 모임을 말합니다.컴퓨터 과학에서는 순서와 중복이 없는 원소들을 갖는 자료구조를 말합니다. 1-1. 코딩 테스트에 필요한건 상호배타적 집합 집합(Set)은 여러 문제를 해결하기 위해 자주 사용되는데, 특히 상호배타적 집합(Disjoint Set)은 서로 겹치지 않는 원소들로 이루어진 여러 집합 즉, 교집합이 없는 집합관계로 서로 다른 집합들을 효율적으로 관리할 수 있게 해줍니다. 위 그림의 집합A와 집합B는 상호배타적 집합이라 .. 더보기
이진탐색트리(Binary Search Tree)의 핵심: 탐색, 구조, 순회 방법 쉽게 배우기 안녕하세요, 스터디 4주차입니다. 이번에는 트리(Tree) 자료구조에 대해서 알아보려고 합니다.트리가 무엇이고, 왜 사용하는지? 그리고 가장 많이 사용하는 이진트리(Binary Tree)와 이진탐색트리(Binary Tree)까지 이야기 해보겠습니다. 도움이 되는 글이었으면 좋겠습니다. 😄 1. 트리(Tree) 자료구조가 뭐지? 트리(Tree) 자료구조는 그래프의 일종으로, 노드와 간선으로 이루어진 계층적 방향 그래프를 말합니다. (부모 - 자식 관계)나무가 가지를 치는 모양처럼 생겨 흔히 회사의 조직도나 파일시스템 같이 위 아래 계층을 나타낼 때 많이 쓰입니다.또한 상위노드에서 하위노드로 연결되는 방향성이 있기 때문에, 위에서 아래로 내려가면 다시 올라갈 수 없게 순환을 허용하지 않습니다. 1.1. 트.. 더보기
해시(Hash) 함수와 충돌(Collision) 해결 전략: 효율적인 데이터 관리 안녕하세요, 스터디 3주차입니다. 이번 시간에는 해시(Hash)와 해시 충돌(Collision)에 대해 탐구를 해보려고 합니다.프로그래밍에서 해시가 어떻게 사용되는지, 그리고 충돌 문제를 어떻게 해결하는지 예시와 함께 알아보겠습니다.또한 문제도 풀어보면서 해시를 같이 경험하면 좋겠습니다. 😄 1. 해시(Hash)란? 해시(Hash)는 해시 함수를 사용하여 입력 값을 고정된 크기의 어떠한 해시 값으로 변환하여 매핑하는 것을 말합니다. 이 과정에서 원본 데이터의 크기나 형식과 상관없이 해시 값은 일정한 크기를 가지게 되며, 주로 빠른 데이터 검색, 암호화, 무결성 검증 등 다양한 분야에서 활용됩니다. 해시의 핵심은 효율적인 데이터 관리입니다. 일반적으로 데이터베이스, 캐시 시스템, 검색 엔진, 컴파일러 등.. 더보기
선형 자료구조 탐구: 스택, 큐, 덱으로 배우는 알고리즘 기초 스터디 2주차입니다.이번에는 선형 자료구조가 무엇인지? 와 기본적인 선형 자료구조중 스택 & 큐 그리고 덱이 무엇인지 알아보겠습니다그리고 문제도 풀어보면서 언제 사용하게 되는지 고민해보는 시간이 되었으면 좋겠네요. 😆 1. 선형 자료구조란?선형 자료구조는 데이터가 일렬로 나열된 형태로 저장되는 구조를 말하는데, 이러한 구조는 앞의 요소와 뒤의 요소 간에 1 : 1의 선형적인 관계를 통해 순차적인 접근과 처리가 용이한 장점이 있습니다. 대표적으로 배열, 연결 리스트, 스택, 큐를 예로 들 수 있습니다.선형 자료구조 중 꼭 알아야하는 스택, 큐 그리고 덱까지 알아보겠습니다. 2. 스택을 알아보자 스택은 LIFO(Last In, First Out) 원칙을 따르는 자료구조로, 가장 최근에 삽입된 데이터가 가장.. 더보기
코딩 테스트 필수 개념: 시간 복잡도를 알면 문제 해결이 쉬워진다 최근에 코딩 테스트 합격자 되기 - C++ - 저자 박경록님 께서 스터디를 열어 주셨는데좋은 기회라고 생각해서 스터디에 참여하게 되었습니다.  개발자로서 문제해결능력, 논리력을 키우고자 한다면 알고리즘만한게 없는거 같아요. 같이 공부하면서 알고리즘과 친해지는 시간이 되었으면 좋겠습니다. 가장 유명한 알고리즘 입문서인 INTRODUCTION TO ALGORITHMS를 아시나요? 두께가 어마어마 하네요.언젠가는... 읽어볼 수 있겠죠? ㅎㅎ 1. 알고리즘 이란?위키피디아에서는 알고리즘을 수학과 컴퓨터과학에서 사용되는 문제 해결방법을 정의한 "일련의 단계적 절차" 이자 어떠한 문제를 해결하기 위한 "동작들의 모임" 이라고 합니다. 즉, 어떠한 문제를 풀기위한 처리과정 or 절차로 정리할 수 있겠네요.  위키 .. 더보기
자바의 애노테이션은 어떻게 사용하는 걸까? @interface의 진짜 의미와 활용법 이번에는 애노테이션에 대해서 학습할게요.자바를 이용하면서 애노테이션을 많이 사용하는데, 정확한 의미는 잘모르는 것 같아서 찾아볼게 많을 것 같네요. ㅎㅎ 주석이라고 해석할 수 있는 Annotation은 자바에서 어떠한 기능을 하는지 찾아보겠습니다. 애노테이션은 코드의 동작에 직접적인 영향을 미치지않고, 메타데이터의 형태로 프로그램의 데이터를 제공한다고 합니다. 컴파일러에 대한 정보 : 컴파일러는 애노테이션을 사용하여 오류를 감지하거나 경고를 억제할 수 있습니다.컴파일 시간 및 배포 시간 처리 : 소프트웨어 도구는 애노테이션 정보를 처리하여 코드, XML 파일 등을 생성할 수 있습니다.런타임 처리 : 일부 애노테이션은 런타임 시 검사할 수 있습니다. 애노테이션은 클래스, 필드, 메소드 및 기타 프로그램 요.. 더보기