[백준/그리디] 2457 공주님의 정원 - 자바

2024. 2. 3. 15:56· Problem Solving/CT-Java
목차
  1. 문제
  2. 풀이

문제

https://www.acmicpc.net/problem/2457

 

2457번: 공주님의 정원

첫째 줄에는 꽃들의 총 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 각 꽃이 피는 날짜와 지는 날짜가 주어진다. 하나의 날짜는 월과 일을 나타내는 두 숫자로 표현된다. 예를 들어서,

www.acmicpc.net

 

풀이

주석참고

import java.io.*;
import java.util.*;

public class BOJ_2457_G3_공주님의정원 {
    static int n;
    static final int LAST_DAY = 1201;
    static List<Flower> list;
    public static void main(String[] args) throws Exception {
        // start :: input
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        n = Integer.parseInt(br.readLine());

        list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            list.add(new Flower(br.readLine()));
        }
        list.sort((o1, o2) -> {
            // 시작일이 같다면 종료일이 가장 늦은 꽃 정렬
            if (o1.start == o2.start) return o2.end - o1.end;
            // 시작일이 빠른 순으로 정렬
            return o1.start - o2.start;
        });
        // end :: input

        int sd = 301; // 시작일
        int ed = 0; // 종료일
        int ans = 0; // 꽃 개수
        int idx = 0; // 꽃 탐색 위치
        while (sd < LAST_DAY) {
            boolean newFlower = false; // 새로운 꽃 탐색 여부
            for(int i = idx; i < n; i++) {
                Flower cur = list.get(i);
                // 현재 꽃 시작일보다 나중에 피는 꽃이면 탐색 의미 없음
                if(cur.start > sd) break;
                // 현재꽃이 시작일보다 먼저 시작 or 같다면 현재꽃 종료일이 이전꽃 종료일보다 늦다면 
                if(cur.end > ed) {
                    // 새로운꽃 찾았으니 종료일을 새로 탐색한 꽃 종료일로 바꾸고
                    ed = cur.end;
                    // 현재 꽃 이후부터 잠색
                    idx = i + 1;
                    newFlower = true;
                }
                
            }

            if(newFlower) {
                sd = ed;
                ans++;
            } else {
                break;
            }


        }

        System.out.println(ed < LAST_DAY ? "0" : ans);

    }

    public static class Flower{
        int start; // 꽃 시작일
        int end; // 꽃 종료일
        public Flower(String a) {
            String[] spl = a.split(" ");
            if(Integer.parseInt(spl[1]) < 10) {
                spl[1] = "0" + spl[1];
            }
            if(Integer.parseInt(spl[3]) < 10) {
                spl[3] = "0" + spl[3];
            }
            this.start = Integer.parseInt(spl[0]+spl[1]);
            this.end = Integer.parseInt(spl[2]+spl[3]);
        }

    }
}

'Problem Solving > CT-Java' 카테고리의 다른 글

[백준/DP] 17404 RGB거리2 - 자바  (0) 2024.02.03
[백준/DP-DFS] 1103 게임 - 자바  (0) 2024.02.03
[백준/DP] 2616 소형기관차 - 자바  (0) 2024.02.03
[프로그래머스/문자열] 17677 [1차] 뉴스 클러스터링 - JAVA  (0) 2023.09.18
[프로그래머스/구현] 77485 행렬 테투리 회전하기 - JAVA  (0) 2023.09.16
  1. 문제
  2. 풀이
'Problem Solving/CT-Java' 카테고리의 다른 글
  • [백준/DP] 17404 RGB거리2 - 자바
  • [백준/DP-DFS] 1103 게임 - 자바
  • [백준/DP] 2616 소형기관차 - 자바
  • [프로그래머스/문자열] 17677 [1차] 뉴스 클러스터링 - JAVA
White Han
White Han
Software Developer
White Han
sudo apt-get happiness
White Han
전체
오늘
어제
  • 분류 전체보기 (195)
    • Language (47)
      • Java (17)
      • Java-Weekly-study (12)
      • Python (18)
    • BackEnd (11)
      • Server (2)
      • Spring (3)
      • Spring Security (0)
      • JDBC (1)
      • NodeJS (2)
      • LINUX (3)
    • DataBase (10)
      • MySQL (5)
      • MongoDB (4)
      • Oracle (1)
    • Infra (4)
      • Docker (4)
    • CS (38)
      • OS (38)
      • 아키텍쳐 (0)
    • Problem Solving (79)
      • Algorithm (8)
      • CT-Java (30)
      • CT-Python (41)
    • IDE (1)
      • eclipse (1)
      • vscode (0)
    • Etc. (3)
      • Git (1)
      • TDD, Refactor, CleanCode (1)
      • Conference (1)
    • 기록 (2)
      • 후기 (1)
      • 프로젝트 회고록 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

  • 방문해 주셔서 감사합니다.

인기 글

태그

  • javascript
  • 사무용 모니터
  • Java super
  • 프로세스
  • 자바스크립트
  • SSAFY
  • 알파스캔 AOC 24B1X
  • 운영체제 구조
  • 알파스캔 모니터
  • AOC 24B1X
  • 자바스크립트 식별자
  • 운영체제
  • 싸피8기
  • 싸피 합격
  • javascript identifier
  • 자바스크립스 식별자 종류
  • OS
  • 자바스크립트 개념
  • java
  • 사무용 모니터 추천
  • Java Inheritance
  • 운영체제 역할
  • 자바 super
  • Java this
  • 프로세서
  • 싸피
  • 자바 inheritance
  • 자바 this
  • 24인치 모니터 추천
  • 싸피 후기

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
White Han
[백준/그리디] 2457 공주님의 정원 - 자바
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.