recursion 3

Recursion 응용 2 - 블롭 카운팅

해당 게시물은 인프런 - "영리한 프로그래밍을 위한 알고리즘 강좌" 강의를 참고하여 작성한 글 입니다강의 링크문제그림에서 특정 좌표의 blob의 크기를 구하는 문제다Binary 이미지다각 픽셀은 image pixel 또는 background pixel이다서로 연결된 image pixel들을 blob이라고 부른다상하좌우 및 대각 방향으로도 연결된 것으로 간주한다위 그림에서는 총 4개의 blob이 있다문제를 정의하면 다음과 같다입력:N x N 크기의 2차원 그리드하나의 좌표 (x, y)출력:픽셀 (x, y)가 포함된 blob의 크기(x, y)가 어떤 blob에도 속하지 않는 경우에는 0Recursive Thinking이 문제를 Recursion을 이용해 해결해 본다수도 코드는 다음과 같다현재 픽셀이 imag..

알고리즘 2024.08.19

Recursion 응용 1 - 미로찾기

해당 게시물은 인프런 - "영리한 프로그래밍을 위한 알고리즘 강좌" 강의를 참고하여 작성한 글 입니다강의 링크Maze 미로찾기2차원 배열 입구(0,0)에서 출구(n-1,n-1)까지 찾아가는 문제흰색 칸은 이동할 수 있는 통로, 파란색 칸은 이동할 수 없는 벽이다Recursive Thinking순환적으로 생각해 문제를 해결한다현재 위치에서 출구까지 가는 경로가 있으려면 1) 현재 위치가 출구이거나 혹은 2) 이웃한 셀들 중 하나에서 현재 위치를 지나지 않고 출구까지 가는 경로가 있거나Decision Problem답이 yes or no인 문제로 recursion을 생각해본다다음은 위 해결법의 수도코드다boolean findPath(x, y) if (x, y) is the exit // 현..

알고리즘 2024.08.12

순환 (Recursion)

해당 게시물은 인프런 - "영리한 프로그래밍을 위한 알고리즘 강좌" 강의를 참고하여 작성한 글 입니다강의 링크RecursionRecursion은 자기 자신을 호출하는 함수다void func(...) { ... func(...); ...}다음 Recursion 코드를 실행하면 무한루프에 빠진다public class Code01 { public static void main(String[] args) { func(); } public static void func() { System.out.println("Hello..."); func(); }}무한루프에 빠지지 않으려면?recursion을 무한 루프에 빠지지 않으려면 적절한 구조를 ..

알고리즘 2024.08.06