プログラマコード問題2021、02/19-Lv.3ワード変換
[質問]
2つの単語begin、target、単語の集合語があります.次のルールを使用して、beginからtargetに変換する最短変換プロセスを検索します.
一度に1つのアルファベットしか置き換えられません. 個の単語にしか変換できません. たとえば、beginがhit、targetがcog、単語が[hot、dog、lot、log、cog]の場合、hit->hot->dot->dogなどの4つのステップで変換できます.
2つの単語begin、target、および単語の集約語をパラメータとして指定する場合は、少なくともいくつかのステップを経てbeginをtargetに変換するには、解法関数を記述します.
せいげんじょうけん
各単語はアルファベット小文字のみで構成されます.各単語の長さは3または10を超えず、すべての単語の長さは同じである. 個の単語は3個または50個以上の単語があり、重複する単語はありません. beginとtargetは異なります. が変換できない場合は0を返します. I/O例
begin
target
words
return
hit
cog
[hot, dot, dog, lot, log, cog]
4
hit
cog
[hot, dot, dog, lot, log]
0
I/O例説明
例1
問題の例は次のとおりです.
例2
単語にないため、ターゲットcogを変換できません.
[回答]
まず、関数
見つかった単語を
ずっと複文を回して、まず今の単語に変換して
位置がランダムに混ざっていれば、論理的に追加する必要があるものもありますが、これでも通れるなら、変換中の単語が順番に含まれているのかもしれません.
まず,この論理は現在の問題では通過できるが,未完成の論理と考えられる.
2つの単語begin、target、単語の集合語があります.次のルールを使用して、beginからtargetに変換する最短変換プロセスを検索します.
一度に1つのアルファベット
2つの単語begin、target、および単語の集約語をパラメータとして指定する場合は、少なくともいくつかのステップを経てbeginをtargetに変換するには、解法関数を記述します.
せいげんじょうけん
各単語はアルファベット小文字のみで構成されます.
begin
target
words
return
hit
cog
[hot, dot, dog, lot, log, cog]
4
hit
cog
[hot, dot, dog, lot, log]
0
I/O例説明
例1
問題の例は次のとおりです.
例2
単語にないため、ターゲットcogを変換できません.
[回答]
function solution(begin, target, words) {
if(!words.includes(target)) return 0;
const process = [begin]; // 변환 과정 담는 배열
let idx = 0; // words에서 사용할 index
while(!process.includes(target)) {
if(differenceCheck(begin, target, process)) {
begin = target;
process.push(begin);
}
if(differenceCheck(begin, words[idx], process)) {
begin = words[idx];
process.push(begin);
}
if(idx < words.length - 1) {
idx++;
}
else {
idx = 0;
}
}
return process.length - 1;
}
// 다른 알파벳 개수 확인하는 함수
function differenceCheck(str1, str2, arr) {
const length = str1.length;
let difference = 0;
for(let i = 0; i < length; i++) {
if(str1[i] !== str2[i]) {
difference++;
}
if(difference > 1) break;
}
if(difference === 1 && !arr.includes(str2)) {
return true;
}
else {
return false;
}
}
単語の中でアルファベットを変えて、target
ができるかどうかを見つけなければなりません.まず、関数
differenceCheck
を作成して、単語の他のアルファベット数を検索します.見つかった単語を
process
配列に入れます.ずっと複文を回して、まず今の単語に変換して
target
と1つしか差がないことを確認したり、words
の中で1つ差のある単語を探したりします.target
が見つかるまで繰り返します.位置がランダムに混ざっていれば、論理的に追加する必要があるものもありますが、これでも通れるなら、変換中の単語が順番に含まれているのかもしれません.
まず,この論理は現在の問題では通過できるが,未完成の論理と考えられる.
Reference
この問題について(プログラマコード問題2021、02/19-Lv.3ワード変換), 我々は、より多くの情報をここで見つけました https://velog.io/@hemtory/Programmers20210219テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol