https://programmers.co.kr/learn/courses/30/lessons/12983
코딩테스트 연습 - 단어 퍼즐
단어 퍼즐은 주어진 단어 조각들을 이용해서 주어진 문장을 완성하는 퍼즐입니다. 이때, 주어진 각 단어 조각들은 각각 무한개씩 있다고 가정합니다. 예를 들어 주어진 단어 조각이 [“ba”, “na
programmers.co.kr
dp 활용 문제다. 처음에 그리디 + dfs로 풀었는데 시간 초과가 났다.
dp를 생각하긴 했는데 dp에 익숙하지 않아서 다른 사람 풀이를 참고했다.
dp를 설계할 때 일반적으로 원하는 답을 설정하면 구하기 쉽다.
이 문제는 각 위치에서 단어조각 개수의 최솟값을 return 하는 문제이므로
dp를 각 위치에서의 최소 단어조각 개수로 설정해주고 문제를 풀면 된다.
단어 조각의 최대 수는 5개이므로 이를 참고하여 작성한다.
import math
def solution(strs, t):
INF = math.inf
dp = [INF for _ in range(len(t)+1)]
dp[0] = 0
for i in range(1,len(t)+1):
j = 0 if i < 5 else i - 5
while j < i:
if dp[j] + 1 < dp[i] and t[j:i] in strs:
dp[i] = dp[j]+1
j +=1
return dp[len(t)] if dp[len(t)] != INF else -1
'Programming > Programmers' 카테고리의 다른 글
[프로그래머스] 무지의 먹방 라이브 (Python) (0) | 2021.12.28 |
---|---|
[프로그래머스] 가사 검색 (Python) (0) | 2021.12.27 |
[프로그래머스] 실패율 (Python) (2) | 2021.12.21 |
[프로그래머스] 지형 이동 (Python) (0) | 2021.12.20 |
[프로그래머스] 지형 이동 (Python) (0) | 2021.12.20 |
댓글