Zayson
A to Zayson!
Zayson
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (132)
    • Computer Science (20)
      • Network (4)
      • DB (12)
      • OS (4)
    • Algorithm (32)
      • ์™„์ „ํƒ์ƒ‰(Brute-Force) (3)
      • ๊ทธ๋ฆฌ๋””(Greedy) (6)
      • ํˆฌํฌ์ธํ„ฐ(Two-Pointer) (1)
      • ๊ทธ๋ž˜ํ”„(Graph) (5)
      • BFS & DFS (9)
      • ๊ตฌํ˜„, ์‹œ๋ฎฌ๋ ˆ์ด์…˜(Implementation) (5)
      • ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ(DP) (3)
    • Backend (51)
      • Spring Boot (19)
      • JPA (16)
      • Kafka (2)
      • Java (13)
      • Kotlin (1)
    • DevOps (1)
      • Jenkins (5)
      • Oracle Cloud Infrastructure (1)
      • Kubernetes & Docker (1)
    • Trouble Shooting (3)
      • JPA (1)
      • Spring Boot (2)
    • ํšŒ๊ณ  (5)
      • ์—”๋นต ํ”„๋กœ์ ํŠธ ํฌ์ŠคํŠธ ๋กœ๋“œ๋งต (1)
      • 2022๋…„ (4)
    • Kafka (7)
      • Kafka (5)
      • Kafka Connect (2)
    • ๊ธฐ์ˆ  ์„œ์  (6)
      • ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค๊ณ„ (3)
      • ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ •๋ณตํ•ด์•ผํ•  ๊ฐ์ฒด ์ง€ํ–ฅ๊ณผ ๋””์ž์ธ ํŒจํ„ด (2)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ์™„์ „ํƒ์ƒ‰
  • BFS
  • JPA
  • kafka
  • ๊ตฌํ˜„
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • ๋ผ์ด๋ธŒ์Šคํ„ฐ๋””
  • spring boot
  • Java
  • SpringBoot
  • ๋ฐฑ์ค€
  • CS
  • ๋‚˜ ํ˜ผ์ž ์Šคํ”„๋ง๋ถ€ํŠธ!
  • Kafka Connect
  • Backend
  • dfs
  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹ค์ „ ์ž…๋ฌธ
  • Computer science
  • ๊ทธ๋ฆฌ๋””
  • ์—”๋นตํ”„๋กœ์ ํŠธ

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Zayson

A to Zayson!

[๋ฐฑ์ค€, Java] 19621๋ฒˆ : ํšŒ์˜์‹ค ๋ฐฐ์ • 2
Algorithm/BFS & DFS

[๋ฐฑ์ค€, Java] 19621๋ฒˆ : ํšŒ์˜์‹ค ๋ฐฐ์ • 2

2022. 5. 23. 20:39

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

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

๐Ÿ˜ฎ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๋ฌธ์ œ์˜ ์ œํ•œ ์กฐ๊ฑด์—์„œ K ๋ฒˆ์งธ ํšŒ์˜๋Š” K-1 , K+1๋ฒˆ์งธ ํšŒ์˜์™€ ๊ฒน์นœ๋‹ค๊ณ  ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— K ๊ธฐ์ค€์œผ๋กœ ํšŒ์˜๋ฅผ ์ฐธ์„ํ•˜๋Š” ๊ฒฝ์šฐ K-1, K+1ํšŒ์˜๋Š” ์ฐธ์„ํ•  ์ˆ˜ ์—†๋‹ค.

๋ฐ˜๋Œ€๋กœ ํšŒ์˜์— ์ฐธ๊ฐ€ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ K-1, K+1 ํšŒ์˜๋Š” ์ฐธ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ, ์ฒซ ํšŒ์˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ฐธ๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ์™€ ๋ถˆ์ฐธํ•˜๋Š” ๊ฒฝ์šฐ๋กœ DFS๋ฅผ ์ด์šฉํ•œ ์™„์ „ํƒ์ƒ‰์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.

  1. ํšŒ์˜์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๊ฐ€25๊ฐœ๊นŒ์ง€ ์ฃผ์–ด์ง€๋ฏ€๋กœ DFS๋ฅผ ์ด์šฉํ•œ ์™„์ „ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  2. ์ฒซ ๋ฒˆ์งธ ํšŒ์˜ ๊ธฐ์ค€์œผ๋กœ ์ฐธ๊ฐ€์™€ ๋ถˆ์ฐธ ๊ฒฝ์šฐ๋กœ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•œ๋‹ค.
    1. ์ฒซ ๋ฒˆ์งธ ํšŒ์˜์— ์ฐธ๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ 2๋ฒˆ์งธ ํšŒ์˜๋Š” ์ฐธ๊ฐ€ํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— 3๋ฒˆ์งธ ํšŒ์˜์— ์ฐธ๊ฐ€ํ•˜๋„๋ก depth + 2๋ฅผ ํ•ด์ฃผ๊ณ  ํ˜„์žฌ ํšŒ์˜์— ์ฐธ์—ฌํ–ˆ์œผ๋ฏ€๋กœ ํ˜„์žฌ๊นŒ์ง€์˜ ํšŒ์˜ ์ฐธ๊ฐ€ ์ธ์› + ํ˜„์žฌ ํšŒ์˜ ์ฐธ๊ฐ€ ์ธ์›์„ ๋„ฃ์–ด์ค€๋‹ค.
    2. ์ฒซ ๋ฒˆ์งธ ํšŒ์˜์— ๋ถˆ์ฐธํ•˜๋Š” ๊ฒฝ์šฐ 2๋ฒˆ์งธ ํšŒ์˜๋Š” ์ฐธ๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 2๋ฒˆ์งธ ํšŒ์˜์— ์ฐธ๊ฐ€ํ•˜๋„๋ก depth + 1๋ฅผ ํ•ด์ฃผ๊ณ  ํ˜„์žฌ ํšŒ์˜์— ๋ถˆ์ฐธํ–ˆ์œผ๋ฏ€๋กœ ๊ทธ๋Œ€๋กœ ํ˜„์žฌ๊นŒ์ง€์˜ ํšŒ์˜ ์ฐธ๊ฐ€ ์ธ์›์„ ๋„ฃ์–ด์ค€๋‹ค.

๐Ÿšฉ Java ์ฝ”๋“œ

package com.algorithm.Baekjoon;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

public class Main_19621_ํšŒ์˜์‹ค_๋ฐฐ์ •_2 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());
        List<Room> roomList = new ArrayList<>();
        for(int loop = 0; loop < N ; loop++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int start = Integer.parseInt(st.nextToken());
            int end = Integer.parseInt(st.nextToken());
            int headcount = Integer.parseInt(st.nextToken());
            roomList.add(new Room(start, end, headcount));
        }

        int rst = getMaxHeadcount(N, roomList);
        System.out.println(rst);

        br.close();
    }

    private static int headcount;
    private static int getMaxHeadcount(int n, List<Room> roomList) {
        headcount = 0;

        // n์ด ์ตœ๋Œ€ 25์ด๋ฏ€๋กœ dfs๋ฅผ ์ด์šฉํ•œ ์™„์ „ ํƒ์ƒ‰ ๊ฐ€๋Šฅ
        dfs(0, roomList, 0, n);

        return headcount;
    }

    private static void dfs(int depth, List<Room> roomList, int count, int n) {
        // List์˜ Max ์ธ๋ฑ์Šค๊ฐ€ n-1๊นŒ์ง€ ์ด๋ฏ€๋กœ ์ด ์ด์ƒ์ด ๋˜๋Š” ๊ฒฝ์šฐ ๋ชจ๋“  ํšŒ์˜๊ฐ€ ๋๋‚œ ๊ฒฝ์šฐ
        if(depth > n-1) {
            headcount = Math.max(headcount, count);
            return;
        }

        // ํ˜„์žฌ ํšŒ์˜ ์ฐธ์—ฌํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ํšŒ์˜ ์ฐธ์—ฌ ๋ชปํ•จ
        dfs(depth + 2, roomList, count + roomList.get(depth).getHeadcount(), n);

        // ํ˜„์žฌ ํšŒ์˜ ์ฐธ์—ฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ํšŒ์˜ ์ฐธ์—ฌ
        dfs(depth + 1, roomList, count, n);
    }

    static class Room {
        private int start;
        private int end;
        private int headcount;

        public Room(int start, int end, int headcount) {
            this.start = start;
            this.end = end;
            this.headcount = headcount;
        }

        public int getStart() {
            return start;
        }

        public int getEnd() {
            return end;
        }

        public int getHeadcount() {
            return headcount;
        }
    }
}
๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Algorithm > BFS & DFS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€, Java] 14226๋ฒˆ : ์ด๋ชจํ‹ฐ์ฝ˜  (0) 2022.07.27
[๋ฐฑ์ค€, Java] 1039๋ฒˆ : ๊ตํ™˜  (0) 2022.07.22
[๋ฐฑ์ค€, Java] 9934๋ฒˆ : ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ  (0) 2022.05.20
[๋ฐฑ์ค€, Java] 16928๋ฒˆ : ๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ ๊ฒŒ์ž„  (0) 2022.05.09
[๋ฐฑ์ค€, Java] 1967๋ฒˆ : ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„  (0) 2022.05.08
    'Algorithm/BFS & DFS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [๋ฐฑ์ค€, Java] 14226๋ฒˆ : ์ด๋ชจํ‹ฐ์ฝ˜
    • [๋ฐฑ์ค€, Java] 1039๋ฒˆ : ๊ตํ™˜
    • [๋ฐฑ์ค€, Java] 9934๋ฒˆ : ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ
    • [๋ฐฑ์ค€, Java] 16928๋ฒˆ : ๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ ๊ฒŒ์ž„
    Zayson
    Zayson
    ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๋Š” ๊ณต๊ฐ„

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”