알고리즘/programmers

[Programmers] 단어 퍼즐

꾸준함. 2021. 9. 30. 10:44

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/12983

 

코딩테스트 연습 - 단어 퍼즐

단어 퍼즐은 주어진 단어 조각들을 이용해서 주어진 문장을 완성하는 퍼즐입니다. 이때, 주어진 각 단어 조각들은 각각 무한개씩 있다고 가정합니다. 예를 들어 주어진 단어 조각이 [“ba”, “na

programmers.co.kr

DP를 이용하는 문제였습니다.

 

알고리즘은 아래와 같습니다.

1. 점화식을 cache[t의 인덱스] = min(cache[t의 인덱스], cache[t의 인덱스 - 원소 길이] + 1)로 설정해줍니다.

1.1 여기서 cache[t의 인덱스]란 t의 인덱스까지의 부분 문자열을 뽑았을 때 단어 조각들의 최소 숫자입니다.

2. 이중 반복문을 통해 위 점화식을 구해줍니다.

3. cache[t의 길이]가 INF라면 문자열을 단어 조각들로 형성 못하므로 -1을 반환해주고, 그 외 케이스는 cache[t의 길이]를 반환해줍니다.

3.1 cache[t의 길이] = t의 길이까지의 부분 문자열을 이루는 단어 조각들의 최소 숫자 = t를 이루는 단어 조각들의 최소 숫자

 

 

개발환경:Visual Studio 2017

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > programmers' 카테고리의 다른 글

[Programmers] 게임 맵 최단거리  (0) 2021.09.30
[Programmers] 폰켓몬  (0) 2021.09.30
[Programmers] 예상 대진표  (0) 2021.09.30
[Programmers] 짝지어 제거하기  (0) 2021.09.30
[Programmers] 모두 0으로 만들기  (0) 2021.09.29