코테/백준

[백준/JAVA] 2565번: 전깃줄

imname1am 2023. 6. 4. 21:22
반응형

🔺 문제

 

2565번: 전깃줄

첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결되는

www.acmicpc.net

 

 

🔺 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import java.util.*;
import java.io.*;
 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        
        int N = Integer.parseInt(br.readLine());
        int[][] wire = new int[N + 1][2];
        int[] dp = new int[N + 1];
        
        for(int i = 1 ; i <= N ; i++) {
            st = new StringTokenizer(br.readLine(), " ");
            wire[i][0= Integer.parseInt(st.nextToken());
            wire[i][1= Integer.parseInt(st.nextToken());
            dp[i] = 1;
        }
        
        // A 전봇대 기준 오름차순 정렬
        Arrays.sort(wire, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[0- o2[0];
            }
        });
        
        for(int i = 1 ; i <= N ; i++) {
            for(int j = 1 ; j < i ; j++) {
                if(wire[j][1< wire[i][1]) {
                    dp[i] = Math.max(dp[i], dp[j] + 1);
                }
            }
        }
        
        int max = 0;
        for(int i : dp) {
            max = Math.max(max, i);
        }
        
        System.out.println(N - max);
    }
}
cs
✅ 해결 아이디어
✔ DP (Bottom-Up)
- 전체 전선 개수 - 설치 가능 개수 = 철거 개수
→ 여기서 최대한 설치 가능한 개수 구하기 (= LIS)
→ 정렬된 A를 기준으로 B에 연결된 값들에서 LIS하기
(A 전봇대의 탐색 기준값을 중심으로 B에 연결 시, 이전에 B에 연결된 전봇대 값보다 커야 함)

 


🔺 다른 풀이들

- 최고의 설명,,,  Comparator 정렬 까지 알려주심,,, (복습용)

 

[백준알고리즘-JAVA]2565번 풀이(전깃줄) - 초보도 이해하는 풀이

안녕하세요 인포돈 입니다. 백준 알고리즘 2565번 풀이입니다. * 참고사항 - 개발환경은 eclipse을 기준으로 작성되었습니다. - java언어를 이용하여 문제를 풀이합니다. - 알고리즘 문제는 풀이를 보

infodon.tistory.com

 

 

- 클래스를 따로 만드셔서 푸심

 

백준 2565 전깃줄 (Java,자바)

이번에 풀어본 문제는 백준 2565번 전깃줄 입니다.

velog.io

 

[BOJ] 백준 2565번 전깃줄 자바(java) 코드 :: LIS(Longest Increasing Sequence) 찾기

BOJ 2565번 전깃줄 문제 자바(java) 풀이 랭크 : 실버1 백준 2565번 전깃줄 문제 정리 교차하는 전깃줄을 없애서 전깃줄이 교차하지 않도록 하려고 한다. 남아있는 모든 전깃줄이 서로 교차하지 않게

hoho325.tistory.com


💬 느낀 점

우와.. 다른 LIS 문제들도 풀어봐야겠다....

이렇게 응용이 된다니...

스스로 아이디어 생각해서 풀라고 하면... 오만년이 걸릴 것 같다...

 

 

1회독 2회독 3회독 4회독 5회독
V        

(참고)

✔ 풀이 참고.. 항상 감사드리는,,,,

 

[백준] 2565번 : 전깃줄 - JAVA [자바]

www.acmicpc.net/problem/2565 2565번: 전깃줄 첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되

st-lab.tistory.com

 

반응형