본문 바로가기

알고리즘 문제풀이153

[알고리즘] 7-6 부분집합 구하기 - DFS(깊이우선탐색) (인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) 인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 풀이 코드를 정리하고 있습니다. 문제 설명 : 자연수 n이 입력되면 1~n까지의 원소를 갖는 집합의 부분집합을 출력하는 문제(단, 공집합은 제외) 풀이 {1, 2, 3} 3개의 원소로 이루어진 집합의 부분 집합의 개수를 구하는 방법은 원소 1이 있는경우, 없는 경우 -> 2가지 원소 2가 있는 경우, 없는 경우 -> 2가지 원소 3이 있는 경우, 없는 경우 -> 2가지 2 * 2 * 2 = 8 로 8개의 부분집합을 가지게 된다. (즉, n개의 원소를 가진 집합의 부분 집합의 개수는 2n) 집합의 각 원소를 트리의 노드로, 부분 집합에 포함된다 안된다를 간선으로 표현해 이진트리를 만들어보면 DFS(깊이 우선 탐색)을 진행하여 .. 2021. 6. 15.
[알고리즘] 7-4 피보나치 수열 - 재귀함수, 메모이제이션 (인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) 인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 풀이 코드를 정리하고 있습니다. 문제 설명 : n이 입력되면 피보나치 수열 n개의 항을 출력 피보나치수열 : 앞의 2개의 수를 합하여 다음 숫자가 되는 수열(첫 번째와 두 번째 항은 1) 자료 구조 책에서 재귀를 설명할 때 흔히 볼 수 있는 문제로 보통 반복문 또는 재귀 두 가지 방법으로 풀이하는데 이번 문제에서는 재귀와 메모이제이션을 사용하여 풀이한다.(물론 속도는 반복문을 사용하는 쪽이 더 빠르다) 참고 : 반복문으로 푸는 방법 재귀를 사용한 풀이 package inflearn; import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt.. 2021. 6. 13.
[알고리즘] 7-3 팩토리얼 - 재귀함수 (인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) 인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 풀이 코드를 정리하고 있습니다. 문제 설명 : 자연수 n이 입력되면 n! 을 구하는 문제 자료구조 책과 같은 곳에서 재귀함수를 설명할 때 흔히 볼 수 있는 문제이다. 풀이 재귀를 사용하여 풀이 n이 5일때, 메서드의 호출과 반환 과정은 다음과 같다.(->는 메서드 호출 순서, 2021. 6. 13.
[알고리즘] 7-2 재귀함수를 이용한 이진수 출력 (인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) 인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 풀이 코드를 정리하고 있습니다. 문제 설명 : 10진수 n이 입력되면 2진수로 변환하여 출력하는 문제 풀이 10진수를 2진수로 변환하는 방법 10진수를 몫이 1이 될때까지 2로 나눈다. 마지막 남은 몫 1과 나누기 과정에서 생긴 나머지들을 역순으로 적어준다. 11(10) -> 1011(2) 재귀와 위의 계산 방법을 코드에 그대로 적용하여 풀이 package inflearn.recursive_tree_graph; import java.util.Scanner; //재귀함수를 이용한 이진수 출력 public class Main7_2 { public static void recursive(int n) { if (n == 0) retu.. 2021. 6. 13.
[알고리즘] 7-1 재귀함수 (인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) 인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 풀이 코드를 정리하고 있습니다. 문제 설명 : 자연수 n이 입력되면 재귀함수를 이용해 1~n까지 출력하는 문제 풀이 package inflearn.recursive_tree_graph; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; //재귀 함수 : n이 입력되면 1~n까지 출력하는 문 public class Main7_1 { public static void recursive(int n) { if(n == 0) return; recursive(n-1); System.out.print(n + " "); } p.. 2021. 6. 13.
[알고리즘] 6-8 이분 검색(이진 탐색, Binary Search) - 인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의 인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 강의 수강 후 복습 풀이 코드를 정리하고 있습니다. 문제 링크 : https://cote.inflearn.com/contest/10/problem/06-08 문제 설명 : n개의 수와 그 중 하나인 m이 주어지고, n개의 수를 오름차순으로 정렬했을 때 m은 몇 번째에 위치하는지 이분 검색(이진 탐색, Binary Search)을 이용해 구하는 문제 이진 탐색이란? 풀이 이분 검색(이진 탐색, Binary Search)를 사용하여 풀이 package inflearn.sorting_searching; import java.io.BufferedReader; import java.io.IOException; import java.io.. 2021. 6. 12.