본문 바로가기

반응형

Java/Java 알고리즘 인프런

(110)
[Ch.07 - DFS] 02. 부분집합 구하기 2. 부분집합 구하기 자연수 N이 주어지면 1부터 N까지의 원소를 갖는 집합의 부분집합을 모두 출력하는 프로그램 을 작성하세요. 입력설명 첫 번째 줄에 자연수 N(1 부분집합 해당 오른쪽 자식 -> 부분집합이 아님 DFS(1)을 넣어서 시작 -> 1부터 시작, ++해서 1이 n+1이 될때까지 package dfsbfs.ch07; import java.util.Scanner; //부분집합 구하기 (DFS) //주어진 N을 이용해 1부터 N까지의 원소를 갖는 집합의 부분집합을 모두 출력하는 프로그램 //공집합 출력하지 않는다. //2n^-1 [공집합 제외] public class Dfsbfs02 { // D(1) -> O / X로 부분집합이 될 때도, 안 될 때도 존재하므로, 이진트리 이용 // D(1) -..
[Ch.07 - DFS] 01. 이진트리 순회 (+ 깊이우선탐색 DFS) 1. 이진트리 순회 (깊이우선탐색) /_ 전위 순회 : 1234567 ∧ 중위 순회 : 4251637 _\ 후위 순회 : 4526731 Depth First Search (DFS : 깊이우선탐색) -> 가장 낮은 깊이 부터 우선 탐색한다. 구현 노드 클래스 -> 생성자 정의 트리 만들기 -> root -> 데이터 삽입 트리 객체를 인스턴스변수로 만들어서 메서드 생성 후, 호출하는 방식 package dfsbfs.ch07; //DFS -> 백트래킹 //Depth frist search; 깊이 우선 탐색 //이진트리 -> 부모노드, 왼쪽자식노드, 오른쪽자식노드 //루트 노드 -> 왼쪽 노드 -> 왼쪽 노드 [마지막 노드면] -> 오른쪽 노드 [마지막 노드면] -> 오른쪽 노드 //왼쪽 노드 -> 왼쪽 노드 ..
[Ch.07 - Recursive] 04. 피보나치 수열 (+메모이제이션) # 4. 피보나치 수열 설명 1) 피보나키 수열을 출력한다. 피보나치 수열이란 앞의 2개의 수를 합하여 다음 숫자가 되는 수열이다. 2) 입력은 피보나치 수열의 총 항의 수 이다. 만약 7이 입력되면 1 1 2 3 5 8 13을 출력하면 된다. 입력 첫 줄에 총 항수 N(3
[Ch.07 - Recursive] 03. 팩토리얼 3. 팩토리얼 자연수 N이 입력되면 N!를 구하는 프로그램을 작성하세요. (ex. 5! = 5*4*3*2*1= 120) 입력설명 첫 번째 줄에 자연수 N(1 1*2*3*4*5 } }
[Ch.07 - Recursive] 02. 재귀함수를 이용한 이진수 출력 2. 재귀함수를 이용한 이진수 출력 10진수 N이 입력되면 2진수로 변환해 출력하는 프로그램을 작성하세요 (단, 재귀함수를 이용해 출력) 입력설명 첫 번째 줄에 10진수 N(1 2 -> 1 -> 0 -> 4%2 =0,2%2=0, 1%2=1, -> 100 System.out.print(n%2); } } } solution함수 없어도 ->DFS함수에서 재귀함수 구현 가능 package recursive.ch07; import java.util.Scanner; public class Recursive02 { //이진수 출력 //10진수 입력시 2진수로 변환해 출력 public static void main(String[] args) { Scanner kb = new Scanner(System.in); int ..
[Ch.07 - Recursive] 01. 재귀함수 1. 재귀함수 자연수 N이 입력되면 재귀함수를 이용하여 1부터 N까지 출력하는 프로그램을 작성하세요. 입력설명 첫 번째 줄은 정수 N(3 2 -> 1 -> 0 -> 4%2 =0,2%2=0, 1%2=1, -> 100 System.out.print(n%2); } } } solution함수 없어도 ->DFS함수에서 재귀함수 구현 가능 package recursive.ch07; import java.util.Scanner; public class Recursive01 { //재귀함수 -> 함수 3개 필요함, 메인함수, 호출함수, 솔루션함수 //1부터 N까지 출력 public static void main(String[] args) { Scanner kb = new Scanner(System.in); int n=..
[Ch.09 - Greedy] 04. 최대 수입 스케줄 4. 최대 수입 스케쥴(PriorityQueue 응용문제) 설명 현수는 유명한 강연자이다. N개의 기업에서 강연 요청을 해왔다. 각 기업은 D일 안에 와서 강연을 해 주면 M만큼의 강연료를 주기로 했다. 각 기업이 요청한 D와 M를 바탕으로 가장 많을 돈을 벌 수 있도록 강연 스케쥴을 짜야 한다. 단 강연의 특성상 현수는 하루에 하나의 기업에서만 강연을 할 수 있다. 입력 첫 번째 줄에 자연수 N(1=1;max--){ while(i!=0){ if(arr.get(i).day
[Ch.09 - Greedy] 03. 결혼식 ### 3. 결혼식 설명 현수는 다음 달에 결혼을 합니다. 현수는 결혼식 피로연을 장소를 빌려 3일간 쉬지 않고 하려고 합니다. 피로연에 참석하는 친구들 N명의 참석하는 시간정보를 현수는 친구들에게 미리 요구했습니다. 각 친구들은 자신이 몇 시에 도착해서 몇 시에 떠날 것인지 현수에게 알려주었습니다. 현수는 이 정보를 바탕으로 피로연 장소에 동시에 존재하는 최대 인원수를 구하여 그 인원을 수용할 수 있는 장소를 빌리려고 합니다. 여러분이 현수를 도와주세요. 만약 한 친구가 오는 시간 13, 가는시간 15라면 이 친구는 13시 정각에 피로연 장에 존재하는 것이고 15시 정각에는 존재하지 않는다고 가정합니다. 입력 첫째 줄에 피로연에 참석할 인원수 N(5

반응형