일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- socket.io
- 실시간 웹소켓 서버
- Selenium 네이버 블로그
- 서이추 자동
- 웹소켓 서버
- 서로이웃추가 매크로
- 실시간
- nodejs
- 국세청
- 크롤링
- Java
- kwoss2341
- 웹소켓
- rabbitmq
- 셀레니움
- amqplib
- 서로이웃추가 자동
- Node
- 크롤러
- 스크래퍼
- Selenium
- 네이버 블로그
- 네이버 블로그 이웃추가 자동
- 서이추 매크로
- node.js
Archives
- Today
- Total
defaultK
[프로그래머스][BFS/DFS] 단어 변환 c++ 본문
https://programmers.co.kr/learn/courses/30/lessons/43163#
코딩테스트 연습 - 단어 변환
두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수
programmers.co.kr
기본적인 아이디어.
1. 단어에 한 문자만 틀리면 엣지를 연결하는 그래프를 생성한다.
2. 해당 그래프를 BFS(DFS역시 가능)를 이용하여 begin 과 target 사이 최단 거리(엣지 개수)를 구한다.
#include <string>
#include <vector>
#include <iostream>
#include <queue>
using namespace std;
bool onecheck(string a, string b)
{
int x=0;
for(int i=0; i<a.size(); i++)
{
if(a[i]!=b[i])
{
x++;
}
if(x>1) break;
}
if(x>1) return 0;
else if(x==1) return 1;
}
int solution(string begin, string target, vector<string> words) {
int answer = 0;
int n=begin.size();
int zz=0;
words.insert(words.begin(), target);
words.insert(words.begin(), begin);
int size=words.size();
queue <int> q;
vector <int> w[size];
int visit[size];
int d[size];
for(int i=0; i<size; i++)
{
for(int j=0; j<size; j++)
{
if(i==j) continue;
if(onecheck(words[i] , words[j]))
{
w[i].push_back(j);
}
}
}
for(int i=0; i<size; i++)
{
visit[i]=0;
d[i]=0;
}
int start;
int i=0;
start=i;
while(1)
{
visit[start]=1;
for(int j=0; j<w[start].size(); j++)
{
if(visit[w[start][j]]==1) continue;
q.push(w[start][j]);
d[w[start][j]]=d[start]+1;
if(w[start][j]==1) return d[start]+1;
}
if(q.empty())
{
answer = 0;
break;
}
start=q.front();
q.pop();
}
return answer;
}
'알고리즘 ( C++ ) > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 카카오 순위 검색 c++ (0) | 2021.09.05 |
---|---|
[프로그래머스] 카카오 광고 삽입 c++ (0) | 2021.02.08 |
[프로그래머스] (다익스트라) 카카오 합승 택시 요금 c++ (0) | 2021.02.05 |
[프로그래머스] (조합) 카카오 메뉴 리뉴얼 c++ (0) | 2021.02.05 |
[프로그래머스] (그리디) 큰 수 만들기 c++ (0) | 2021.01.31 |
Comments