문제출처: https://www.acmicpc.net/problem/15553
15553번: 난로
첫째 줄에 구사과의 집을 방문하는 친구의 수 N (1 ≤ N ≤ 100,000), 구사과가 가지고 있는 성냥의 개수 K (1 ≤ K ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에는 구사과의 집을 방문하는 친구의 도착 시
www.acmicpc.net
1. 문제 접근 방식
13614번이랑 문제가 비슷했던것 같다.
각 인접한 원소들의 차이값을 새로운 배열에 담고
작은 순서대로 sorting한다.
가장 큰 원소를 k-1번 pop하고
1을 k번 append 해준다음 리스트의 합을 출력한다.
2. 내가 푼 코드
import sys
n, k = map(int,sys.stdin.readline().split())
arr = []
for _ in range(n):
arr.append(int(sys.stdin.readline()))
diff = []
for i in range(len(arr)-1):
diff.append(arr[i+1]-arr[i])
diff.sort()
for _ in range(k-1):
diff.pop()
for _ in range(k):
diff.append(1)
print(sum(diff))
3. 결과 및 느낀점
자주 본 그리디+정렬 유형이다. 2212번 13614번
잘 공부해두자.
'[Boj문제풀이]' 카테고리의 다른 글
[Boj/백준] 18234 Python (0) | 2021.10.06 |
---|---|
[Boj/백준] 2170 Python (0) | 2021.10.05 |
[Boj/백준] 13164 Python (0) | 2021.10.05 |
[Boj/백준] 2075 Python (0) | 2021.10.04 |
[Boj/백준] 7983 Python (0) | 2021.10.04 |