File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ # [ Gold II] 꼬인 전깃줄 - 1365
2+
3+ [ 문제 링크] ( https://www.acmicpc.net/problem/1365 )
4+
5+ ### 성능 요약
6+
7+ 메모리: 76880 KB, 시간: 48 ms
8+
9+ ### 분류
10+
11+ 이분 탐색, 가장 긴 증가하는 부분 수열 문제
12+
13+ ### 제출 일자
14+
15+ 2025년 11월 1일 13:48:44
16+
17+ ### 문제 설명
18+
19+ <p >공화국에 있는 유스타운 시에서는 길을 사이에 두고 전봇대가 아래와 같이 두 줄로 늘어서 있다. 그리고 길 왼편과 길 오른편의 전봇대는 하나의 전선으로 연결되어 있다. 어떤 전봇대도 두 개 이상의 다른 전봇대와 연결되어 있지는 않다.</p >
20+
21+ <p style =" text-align : center ;" ><img alt =" " src =" https://onlinejudgeimages.s3-ap-northeast-1.amazonaws.com/upload/201004/picpicpicpicpicpicpicp.JPG " style =" height :181px ; width :141px " ></p >
22+
23+ <p >문제는 이 두 전봇대 사이에 있는 전깃줄이 매우 꼬여 있다는 점이다. 꼬여있는 전깃줄은 화재를 유발할 가능성이 있기 때문에 유스타운 시의 시장 임한수는 전격적으로 이 문제를 해결하기로 했다.</p >
24+
25+ <p >임한수는 꼬여 있는 전깃줄 중 몇 개를 적절히 잘라 내어 이 문제를 해결하기로 했다. 하지만 이미 설치해 놓은 전선이 아깝기 때문에 잘라내는 전선을 최소로 하여 꼬여 있는 전선이 하나도 없게 만들려고 한다.</p >
26+
27+ <p >유스타운 시의 시장 임한수를 도와 잘라내야 할 전선의 최소 개수를 구하는 프로그램을 작성하시오.</p >
28+
29+ ### 입력
30+
31+ <p >첫 줄에 전봇대의 개수 N(1 ≤ N ≤ 100,000)이 주어지고, 이어서 N보다 작거나 같은 자연수가 N개 주어진다. i번째 줄에 입력되는 자연수는 길 왼쪽에 i번째 전봇대와 연결된 길 오른편의 전봇대가 몇 번 전봇대인지를 나타낸다.</p >
32+
33+ ### 출력
34+
35+ <p >전선이 꼬이지 않으려면 최소 몇 개의 전선을 잘라내야 하는 지를 첫째 줄에 출력한다.</p >
36+
Original file line number Diff line number Diff line change 1+ let n = Int ( readLine ( ) !) !
2+ let arr = readLine ( ) !. split { $0 == " " } . map { Int ( String ( $0) ) ! }
3+ var answer = 0
4+ var lis = [ arr [ 0 ] ]
5+
6+ // 즉 lis를 만족하기 위해 몇개의 수를 스킵해야 하냐는 문제. 전선을 잘라내야 하냐는 문제.
7+
8+ for x in arr. dropFirst ( ) {
9+ let index = lowerBound ( x, lis)
10+ if lis. count == index {
11+ lis. append ( x)
12+ continue
13+ }
14+ lis [ index] = x
15+ }
16+ print ( arr. count - lis. count)
17+
18+ func lowerBound( _ x: Int , _ arr: [ Int ] ) -> Int {
19+ var lo = 0 , hi = arr. count
20+
21+ while lo < hi {
22+ let mid = ( lo + hi) / 2
23+ if arr [ mid] < x {
24+ lo = mid + 1
25+ continue
26+ }
27+ hi = mid
28+ }
29+
30+ return lo
31+ }
You can’t perform that action at this time.
0 commit comments