Algorithm/inflearn 90

결혼식

일단 오는 시간 순서대로 정렬을 한다. 앞의 문제와는 다르게 참석해있는 친구를 계속 유지시켜주어야한다. 따라서 각 시간마다 상태 값(state)을 두어서 처리를 한다. 오는 시간과 떠나는 시간이 겹치게 되면 떠나는 것 먼저 처리를 해준다. 상태 값이 's' 이면 오는 것 'e' 이면 떠나는 것으로 구분하여 각 스텝마다 최대 인원을 계산한다. import java.util.*; class Time implements Comparable { public int time; public char state; Time(int time, char state) { this.time = time; this.state = state; } @Override public int compareTo(Time ob) { //시간..

Algorithm/inflearn 2021.10.07

회의실 배정

회의 종료 시간이 제일 빠른 순서대로 정렬한다. 회의 종료 시간이 같을 때는 시작 시간이 빠른 순서대로 정렬한다.(예시 입력2) 시작 시간을 s 종료 시간을 e로 둘거다. 다음 회의의 시작 시간이 이전 회의의 종료 시간과 같거나 클때 회의 수를 증가시켜준다. 그리고 다음 회의의 종료 시간을 다시 마지막 회의의 종료 시간 변수(et)에 넣어준다. import java.util.*; class Time implements Comparable { public int s, e; Time(int s, int e) { this.s = s; this.e = e; } @Override public int compareTo(Time o) { //끝나는 시간이 같으면 시작 시간도 오름차순을 한다. if(this.e==o...

Algorithm/inflearn 2021.10.07

#씨름 선수(Greedy)

키 순서대로 오름차순 정렬을 하게 되면 몸무게만 비교해보면 된다. 키는 작으니 몸무게라도 커야한다. 선발되는 인원의 몸무게를 max값으로 두고 해당 몸무게보다 클 때만 선발해준다. cnt++ 그리고 선발된 인원의 몸무게를 다시 max값으로 둔다. import java.util.*; class Body implements Comparable { public int h, w; Body(int h, int w) { this.h = h; this.w = w; } @Override public int compareTo(Body o) { return o.h-this.h; } } class Main { public int solution(ArrayList arr, int n){ //선발되는 인원 수 int cnt =..

Algorithm/inflearn 2021.10.07

피자 배달거리(DFS 활용)

import java.util.*; class Point{ public int x, y; Point(int x, int y){ this.x=x; this.y=y; } } class Main { static int n, m, len, answer=Integer.MAX_VALUE; static int[] combi; static ArrayList hs, pz;//집의 좌표, 피자집 좌표 public void DFS(int L, int s){ //조합이 한개 완성됐을 때 //각 집의 피자배달 거리 구해서 더한 뒤 최솟값 구해야한다. //6개의 피자집 중 4개를 뽑는 15가지 경우가 들어간다. //combi에 들어감.(0,1,2,3 0,1,2,4 ...) if(L==m){ int sum=0; for(Point ..

Algorithm/inflearn 2021.10.06