개발후라이
개발후라이
개발후라이
  • 분류 전체보기 (286)
    • Web Front End (75)
      • Javascript & Typescript (26)
      • React (12)
      • Vue (4)
      • Nodejs (1)
      • HTML (6)
      • CSS (7)
      • HTTP (6)
      • 책 - Review (8)
    • TIL (0)
    • Problem Solved (135)
      • 알고리즘 (4)
      • BOJ (67)
      • Programmers (8)
      • HackerRank (33)
      • LeetCode (23)
    • 회고 (4)
      • 오늘의 회고 (16)
      • 주간 회고 (15)
      • 월간 회고 (7)
      • WakaTime (9)
    • Git (3)
    • 기타 (15)
      • 취업 (5)
      • 자격증 (1)

블로그 메뉴

  • GitHub
  • LinkedIn
  • 홈

인기 글

태그

  • JavaScript
  • 노개북
  • 프론트엔드
  • TypeScript
  • 자바스크립트
  • 오늘의회고
  • 개발자
  • 회고
  • 릿코드
  • 노마드북클럽

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
개발후라이

개발후라이

Problem Solved/BOJ

[BOJ][Java] 1931번 - 회의실배정

2020. 1. 12. 12:52
반응형

문제

백준 1931번 문제: 회의실배정

문제 설명

가능한 한 많은 구간을 선택하는 문제

일단 그리디 알고리즘은 정해진 기준에서 현재의 가장 최상의 값을 찾아나가는 알고리즘이다.
그럼 회의실배정 문제에서 최상의 값을 찾을 수 있는 기준은 어떻게 잡을 수 있을까?

  1. 회의가 끝나는 시간을 최대한 작은 수부터 골라야 한다.
  2. 회의 끝나는 시간이 같다면 회의 시작 시간이 작은 수부터 골라야 한다.

성공 코드

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int time[][] = new int[n][2];

        for (int i = 0; i < n; i++) {
            time[i][0] = sc.nextInt(); // start
            time[i][1] = sc.nextInt(); // end
        }
        sc.close();

        System.out.print(solution(time));
    }

    private static int solution(int[][] time) {
        int result = 0;

        Arrays.sort(time, new Comparator<int[]>() {

            @Override
            public int compare(int[] o1, int[] o2) {
                if (o1[1] == o2[1])
                    return o1[0] - o2[0]; // start time 기준
                return o1[1] - o2[1]; // end time 기준으로 정렬
            }

        });

        int last = 0;
        for (int i = 0; i < time.length; i++) {
            if (last <= time[i][0]) {
                last = time[i][1];
                result++;
            }
        }

        return result;
    }

}
반응형
저작자표시 (새창열림)
    'Problem Solved/BOJ' 카테고리의 다른 글
    • [BOJ][Java] 11399번 - ATM
    • [BOJ][Java] 2579번 - 계단 오르기
    • [BOJ][Java] 11047번 - 동전0
    • [BOJ][Java] 1932번 - 정수 삼각형
    개발후라이
    개발후라이
    어제보다 오늘 발전하기 위한 공간 https://github.com/choisohyun

    티스토리툴바