알고리즘 문제풀이/백준

#7983 : 내일 할거야

모항 2022. 11. 9. 19:44

풀이방법

사용된 것:

정렬

그리디

Comparator

 

 

2022.11.09

 

오답노트 #7983 : 내일 할거야

풀이방법 및 문제점 2022.11.09 어이 없는 이유로 계속 실패하다가 오늘 해결에 성공한 문제이다. 이 문제를 풀 수 있는 완벽한 로직은 9달 전부터 알고 있었다. 그러나 그 때에는 Comparator를 아직 알

blowupmomo.tistory.com

 

과제들을 마감일자가 가장 늦은 순으로 정렬한다. (가장 마감이 늦은 과제가 가장 앞에 오도록)

 

정답 값을 저장할 int 형 변수 ans를 선언하고, Integer.MAX_VALUE로 초기화한다.

 

그 후, 정렬되어있는 과제들을 앞에서부터 방문하며 아래를 반복한다.

 

이번 과제의 마감일자가 ans 값보다 큰 경우:

   ans = ans - (이번 과제를 하는 데 걸리는 시간)

이번 과제의 마감일자가 ans 값보다 작거나 같은 경우:

   ans = (이번 과제의 마감일자) - (이번 과제를 하는 데 걸리는 시간)

 

이 반복문을 다 끝내고 나면 ans에는 정답이 저장되어있다.

ans를 출력하면 문제가 해결된다.

 

 

코드

Java(2022.11.09)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		/*
		 * 입력값 읽어오기
		 */
		//과제의 개수
		int n = Integer.parseInt(br.readLine());
		//과제들
		Homework[] hws = new Homework[n];
		
		for(int i=0; i<n; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			hws[i] = new Homework(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
		}
		
		//과제를 마감 일자가 늦은 순으로 정렬
		Arrays.sort(hws, new Comparator<Homework>() {

			@Override
			public int compare(Homework h1, Homework h2) {
				// TODO Auto-generated method stub
				if (h1.getT()<h2.getT()) return 1;
				else return -1;
			}
			
		});
		
		/*
		 * 정답 구하기
		 */
		int ans = Integer.MAX_VALUE;
		
		for(Homework h: hws) {
			if(h.getT()>ans) ans = ans - h.getD();
			else ans = h.getT() - h.getD();
		}
		System.out.print(ans);

	}

}

//과제 클래스
class Homework {
	private int d;	//하는 데 걸리는 일 수
	private int t;	//마감일자
	public Homework (int d, int t) {
		this.d = d;
		this.t = t;
	}
	
	public int getD(){
		return d;
	}
	public int getT() {
		return t;
	}
}

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

#2246 : 콘도 선정  (0) 2022.11.17
#1063 : 킹  (0) 2022.11.14
#5545 : 최고의 피자  (0) 2022.11.09
#3226 : 전화 요금  (0) 2022.09.03
#10820 : 문자열 분석  (0) 2022.09.03