728x90
조합으로 구현했고 테스트 케이스는 통과했으나 메모리 초과가 나서 실패했다. 찾아보니 투 포인터를 사용한 이분 탐색으로 푸는 문제라고 한다. 잘 이해는 되지 않는다.
import sys
from itertools import combinations
import math
n,m = list(map(int,sys.stdin.readline().split(" ")))
k = list(map(int,sys.stdin.readline().split(" ")))
# 각 구간의 목표 : 최대와 최소 값의 차이가 가장 작아야 한다.
# 조합으로 컷 할 인덱스를 뽑기
'''
num = [ ]
for i in range(1,len(k)):
num.append(i)
# 0~m , m_n+1, ,,, n~
com = list(combinations(num,m-1))
answer = []
for i in range(0,len(com)):
answers = [ ]
queue = [0]+list(com[i])+[len(k)]
for j in range(0,len(queue)-1):
temp_arr = k[queue[j]:queue[j+1]]
answers.append(max(temp_arr)-min(temp_arr))
answer.append(max(answers))
print(min(answer))
'''
728x90
'🟢 알고리즘 문제 풀이 > Baekjoon' 카테고리의 다른 글
| [파이썬] 백준 11404 플로이드 (0) | 2023.05.18 |
|---|---|
| [파이썬] 백준 1563 개근상 (0) | 2023.05.16 |
| [파이썬] 백준 1344 축구 (0) | 2023.05.12 |
| [파이썬] 백준 9095 1, 2, 3 더하기 (0) | 2023.05.12 |
| [파이썬] 백준 17404 RGB2 (0) | 2023.05.11 |