본문 바로가기
프로그래머스

단어 퍼즐 C++

by paysmile 2022. 3. 22.

https://programmers.co.kr/learn/courses/30/lessons/12983

 

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

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

programmers.co.kr

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<string> strs, string t)
{
	int answer = 0;
	vector<int> v;
	v.resize(t.length() + 1);

	for (int i = 0; i <= t.length(); i++) {
		v[i] =2e9;
	}

	v[0] = 0;

	for (int i = 1; i <= t.size(); i++) {
		int min_value = 2e9;
		for (int k = 0; k < strs.size(); k++) {
			bool flag = true;
			int ii = i - strs[k].size();
			if (ii < 0) continue;
			for (int index = 0; index < strs[k].size(); index++) {
				if ( strs[k][index] == t[ii]) {
					ii++;
					continue;
				}
				else {
					flag = false;
					break;
				}
			}

			if (flag == true) {
				int value = i - strs[k].size();
				min_value = min(min_value, v[value]+1);
			}
		}

		if(min_value != 2e9)
			v[i] = min_value;
	}

	answer = v[t.size()];
	if (answer == 2e9) return -1;
	return answer;
}

'프로그래머스' 카테고리의 다른 글

기지국 설치 C++  (0) 2022.03.24
사칙연산 C++  (0) 2022.03.22
방의 개수 C++  (0) 2022.03.21
지형 이동 C++  (0) 2022.03.21
스티커 모으기 C++  (0) 2022.03.19