문1) 배열을 이용하여, 1~10사이의 수가 중복없이 나오는 프로그램을 작성하시오 > Random 클래스 사용 > Random random = new Random(); hint : 선형탐색 알고리즘 문2) 배열을 사용하여 로또 번호 추출하는 프로그램 작성
재귀 호출 이란? > 재귀 호출(Recursion)은 자기 자신을 호출하는 함수를 뜻합니다. 이를 통해 복잡한 문제를 작은 문제로 나누어 해결하는 분할 정복(Divide and Conquer) 알고리즘 등에 활용됩니다. 재귀 호출은 종료 조건이 반드시 필요하며, 종료
알고리즘 문제를 풀다가 재귀호출에 관한 문제를 풀다가 작성한 블로그 내용이 있다. 하지만, 알고리즘 - 재귀 호출 1탄 23년 4월 이후 재귀 호출에 관한 공부가 미흡했는지, 알고리즘 문제를 풀면서 또 다시 이해가 안가는 부분이 있어서 추가 공부를 바탕으로 블로그 내용을 작성해보려고 한다. 재귀 관련 알고리즘 문제를 풀다보면 깊이 우선 탐색(DFS : ...
DFS(Depth First Sarch)란? 깊이 우선 탐색 그래프 탐색 알고리즘 그래프 : 정점과 간선으로 이루어진 자료구조 정점(node) ❍ 간선(edge) - BFS(Breadth First Search)란? 너비 우선 탐색 백준 2606 바이러스 문
같은 부류 찾기 유형 연결된 묶음 / 덩어리의 개수는 몇개인가? 가장 큰 덩어리의 크기는 얼마인가? 주요 키워드 : 인정합 위치로 이동, 상하좌우, 가로, 세로, 대각선 이동 주어진 정보를 어떻게 변환할 지 재방문을 방지하는 방법 어느 지점에서 DFS를 시작할 지
오직 현재 시점에 가장 좋은 선택을 하는 것👉🏻 현재 내릴 수 있는 최선의 선택에만 집중한다.백준 11047❗️그리드 알고리즘 자체가 늘 최적의 해를 보장하는 것은 아니다현재의 최적 해 ≠ 전체의 최적 해💡 사용 조건 : 최적 해가 보장되는 조건에서만 사용1 서울
Brute Force 알고리즘이란? 사전적 의미 가능한 모든 경우의 수를 시험해보며 문제의 해답을 찾는 가장 단순하고 직접적인 문제 해결 방법 Brute Force는 어떻게 구현할까? (예 : 프로그래머스 - 소수찾기) Brute Force 코테 단독 문제로
해시(Hash) 알고리즘이란? 데이터를 효율적으로 관리하기 위한 알고리즘으로, 어떠한 데이터든 고정된 길이의 고유한 값(해시 값 또는 해시 코드)으로 변환하는 과정을 말함 key, value 를 가지는 자료 구조 > 무언가를 찾기 위한 검색어 = Key > 그
이분 탐색이란? 정렬된 배열에서 사용하기 적합한 탐색 방법 배열의 중앙값을 조사하여 찾고자 하는 항목이 왼쪽 또는 오른쪽에 있는지 확인하는 방식 (중앙에서 시작하기 떄문에 탐색 범위가 반으로 줄어드는 효과가 있음) 찾고자 하는 항목의 방향이 정해지면 반대 방향은 탐색할 필요가 없기 때문에, 매 단계마다 탐색 범위를 반 씩 줄일 수 있음 이분 탐색은...
카데인(Kadane's)알고리즘이란 주어진 수열에서 가장 큰 연속 부분 배열의 합을 효율적으로 찾는 알고리즘으로 동적 프로그래밍(Dynamic Programming)의 한 예로, 지역적 최적해를 활용해 전역적 최적해를 찾는 방식 접근법
모든 쌍 최단 경로(All - Pairs Shortest Path)문제를 해결하기 위한 알고리즘으로, 주어진 가중치 그래프 내의 모든 정점 쌍 간의 최단 경로를 찾음. 여기서 가중치 그래프란 각 간선에 가중치(비용)이 할당된 그래프를 의미하며, 최단 경로란 주어진 두
What is Dijkstra's Algorithm? 가중치가 있는 그래프에서 하나의 시작 정점으로부터 다른 모든 정점들까지의 최단 경로를 찾는 알고리즘 음이 아닌 가중치를 가진 간선들로 이루어진 그래프에 적용되며 이 알고리즘의 핵심 아이디어는 Greedy 방식 작동원리 >1. 초기화 : 시작 정점을 제외한 모든 정점까지의 거리를 무한대로 설정하고, 시...
배열의 시작부터 각 인덱스까지의 원소들의 합을 미리 계산해 두는 것. 예를들어, 배열이 \[a,b,c,d]라면 누적합 배열은 \[a,a+b,a+b+c,a+b+c+d]가 된다. 이 누적합 배열을 사용하면 임의의 구간 \[i,j]의 합을 prfixSum\[j] - pref
비트는 컴퓨터에서 데이터를 나타내는 가장 작은 단위이다. 이는 0 또는 1 두 가지 상태만을 나타낼 수 있는 이진수이다. Java에서 부호 없는 N비트 정수형 변수는 최대 N개의 이진수 자리를 사용해 데이터를 표현할 수 있으며, 각 비트의 가치는 2^0부터 2^(N-1