Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- jdbc
- 알고리즘
- pycon
- 트라이
- CleanCode
- 카카오 인턴
- 튜플
- trie
- 크레인 인형뽑기 게임
- Spring Boot
- Tistory
- 트라이 #trie #알고리즘
- bulk update
- 불량 사용자
- 보행자 천국
- Open API
- 가사 검색
- 징검다리 건너기
- Python
- 티스토리
- 프로그래머스
- 티스토리 open api
- 호텔 방 배정
Archives
- Today
- Total
택시짱의 개발 노트
[프로그래머스] 단어 변환 본문
링크
https://programmers.co.kr/learn/courses/30/lessons/43163
풀이
두 개의 단어 begin, target과 단어의 집합 words가 매개변수로 주어질 때, 최소 몇 단계의 과정을 거쳐 begin을 target으로 변환할 수 있는지 구하는 문제이다.
BFS탐색을 이용하여 최소 값을 구하도록 하였고
이전 문자와 다음 문자를 서로 비교하여 다른 부분이 한 개만 있을 때 BFS의 queue에 추가되도록 하여
target 문자열을 만나게 되면 바로 return을 하도록 하였습니다.
#include<iostream>
#include<vector>
#include<algorithm>
#include<queue>
#include<string>
#include<set>
#include<map>
#include<cstring>
#include<functional>
#include<cmath>
#include<stack>
#define SIZE 55
const int INF = 2000000000;
using namespace std;
typedef long long int ll;
map<char, int> _map[SIZE];
bool word_cmp(string here, string next, int index) {
int cnt = 0;
for (int i = 0; i < here.size(); i++) {
if (here.at(i) == next.at(i))
cnt++;
}
if (cnt == here.size() -1)
return true;
else
return false;
}
queue < pair<string, int> >q;
map<pair<string, string>, bool> visited;
int solution(string begin, string target, vector<string> words) {
pair<string, int> start(begin, 0);
int answer = 0;
q.push(start);
while (!q.empty()) {
pair<string, int> h = q.front(); q.pop();
for (int i = 0; i < words.size(); i++) {
pair<string, int > n(words[i], h.second + 1);
if (!word_cmp(h.first, n.first, i)) {
continue;
}
if (visited[make_pair(h.first, n.first)] == true)
continue;
if (words[i] == target)
return n.second;
q.push(n);
visited[make_pair(h.first, n.first)] = true;
}
}
return answer;
}
반응형
'알고리즘' 카테고리의 다른 글
[백준] 14225번 부분수열의 합 (비트마스크) (0) | 2020.03.24 |
---|---|
[백준] 14425번 문자열 집합 (트라이) (0) | 2020.03.24 |
[백준] 17822번 원판 돌리기 (0) | 2020.03.20 |
[프로그래머스] 줄 서는 방법 (0) | 2020.03.19 |
[프로그래머스] 최고의 집합 (0) | 2020.03.19 |
Comments