Programming/Algorithm 3

Java 재귀함수 멱집합(power set) 구하기

멱집합(power set)이란, 집합론에서 멱집합은 어떤 집합 A에 대하여 A의 모든 집합들로 이루어진 집합을 A의 멱집합이라고 합니다. (공집합과 A 집합 자체도 포함합니다.) A={a, b, c, d}라는 집합 A가 있을 때, 집합 A가 구성할 수 있는 부분집합의 수는 2^4=16개입니다. {Ø} {a}, {b}, {c}, {d} {a, b}, {a, c}, {a, d}, {b, c}, {b, d}, {c, d} {a, b, c}, {a, b, d}, {a, c, d}, {b, c, d} {a, b, c, d} 조금 다른 관점에서 보면 {a, b, c, d}의 모든 부분집합을 나열하기 위해서는 a를 제외한 {b, c, d}의 모든 부분집합을 나열한 것과 (2^3=8개) {Ø} {b}, {c}, {d}..

Java 재귀 함수(Recursion) 개념과 재귀 함수를 사용하는 이유

'재귀 함수(Recursion)의 개념' '재귀적 호출(Recursive call)'은 일정 조건을 만족할 경우 자신을 호출하는 것을 말하며, 이러한 방식으로 구현한 함수를 '재귀 함수'라고 합니다. 재귀 함수는 잘못된 구조로 코드를 짠 경우 무한루프에 빠질 수도 있는데요. 입력값의 변화가 없거나 입력값의 변화가 특정 패턴을 반복하게 되면 그 재귀 함수는 영원히 반복되다가 콜 스택 초과로 프로그램이 종료되어 버립니다. 따라서 재귀 함수를 설계할 때는 적절한 구조를 통해 무한루프에서 빠져나오도록 해야 합니다. 여기에서 적절한 구조란 'Base case'라고 하는 적어도 하나의 재귀(Recursion)에 빠지지 않는 경우가 존재해야 하며, 또 한 가지 'Recursive case'가 필요한데 'Recursi..

1년차 백엔드 개발자가 알고리즘(Algorithm) 공부를 시작하는 이유

먼저 프로그래밍 알고리즘(Algorithm)이란? 알고리즘은 '어떠한 문제를 해결하기 위한 일련의 절차를 공식화한 형태로 표현한 것'입니다. 프로그래밍에서의 알고리즘은 input 값을 통해 output 값을 얻기 위한 계산 과정을 의미하며, 좀 더 자세하게는 컴퓨터가 어떤 문제를 해결하기 위해 사용자가 컴퓨터에게 문제를 어떻게 처리해야 하는지에 대한 방법으로 프로그래밍을 통해 적용시켜주는 것을 이야기합니다. 알고리즘은 프로그래밍을 하는 데 있어서 굉장히 중요한 요소로 작용됩니다. 왜냐하면 어떤 알고리즘을 사용하느냐에 따라서 프로그램이 효율적으로 동작할 수도 있고, 비효율적(느리게)으로 동작할 수도 있기 때문입니다. 알고리즘의 조건 입력 : 알고리즘은 0 또는 그 이상의 외부에서 제공된 자료가 존재해야 합..