인프런 80

[JAVA] 알고리즘 : 송아지 찾기(BFS)

import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; class Main{ int answer=0; int[] dis={1,-1,5}; int[] ch; // 한번 방문한 것은 큐에 안넣기 위해 체크할 배열 Queue Q = new LinkedList(); public int BFS(int s, int e){ ch=new int[10001]; ch[s]=1; Q.offer(s); int L=0; // 루트 노드는 레벨이 0 while(!Q.isEmpty()){ int len=Q.size(); // 탐색하고자하는 레벨에 있는 원소의 개수 for(int i=0; i

ALGORITHM 2022.09.07

[JAVA] 알고리즘 : DFS- 부분집합 구하기

1부터 N까지의 원소를 갖는 집합의 부분집합을 모두 출력하라.(공집합은 출력하지 않는다.) class Main{ static int n; static int[] ch; // 원소를 사용하는지 체크하는 배열 public void DFS(int L){ if(L==n+1){ // 종착점에 왔을 때 String tmp=""; for(int i=1; i0) System.out.println(tmp);// 공집합이 아닐때만 출력 } else{ ch[L]=1; DFS(L+1); ch[L]=0; DFS(L+1); } } public static void main(String[] args){ Main T=new Main(); n=3; ch=new int[n+1]; // 숫자를 인덱스로 하기 위해 T.DFS(1); } }

ALGORITHM 2022.08.22

[JAVA] 알고리즘 : DFS- 이진트리순회

class Node{ int data; Node lt, rt; // 인스턴스 변수-노드라는 클래스의 객체 주소를 저장 public Node(int val){ data=val; lt=rt=null; } } public class Main{ Node root; public void DFS(Node root){ if(root==null) return; // 말단 노드라면 else{ // System.out.print(root.data+" "); // 전위 순회 DFS(root.lt); // System.out.print(root.data+" "); // 중위 순회 DFS(root.rt); // System.out.print(root.data+" "); // 후위 순회 } } public static void ..

ALGORITHM 2022.08.15

[JAVA] 알고리즘 : 정렬- 뮤직비디오(결정 알고리즘)

import java.util.*; public class Main{ public int count(int[] arr, int capacity){ // dvd의 한장 용량을 capacity로 했을 때 // dvd가 몇장 필요한지 리턴 int cnt=1; // dvd 장 수 int sum=0; // dvd에 담아내는 곡들의 합 for(int x : arr){ if(sum+x>capacity){ // 곡을 담았을 때 한장의 용량을 넘어가버리면 cnt++; // 한 장 증가 sum=x; // 새로운 값으로 } else sum+=x; // 누적 } return cnt; } public int solution(int n, int m, int[] arr){ int answer=0; int lt=Arrays.stre..

ALGORITHM 2022.07.28

[JAVA] 알고리즘 : 정렬- 좌표 정렬(compareTo)

import java.util.*; class Point implements Comparable {// 포인트라는 클래스 객체를 정렬한다. public int x, y; Point(int x, int y){ this.x=x; this.y=y; } @Override public int compareTo(Point o){ if(this.x==o.x) return this.y-o.y; // x가 같으면 y를 비교 // 오름차순 정렬이므로 this.y-o.y 는 음수 else return this.x-o.x; } } public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.n..

ALGORITHM 2022.07.27