[プログラマー]旅行コース
2518 ワード
開始します。🌈
最初は12時間で解けましたハハハハ
実際、BFS
というアイデアがすぐに浮かび上がり、最近はあまり名編を書いていないので、DFS
に挑戦しました.結果は辛味🔥🔥🔥
私はもともと頑固で、どうしても捕まえて、解けるまで、
結局行程が少し不順でした
しかし、重要なのは、私が今まで解決した過程が、きっと私の能力値になることです.
実は、私は本当に多くのことを悟りました!思いがけないところでjavascript特性でエラーが発生しましたその間違いは7時間もうろうろしていたので、もっと彫ることができました.(解く過程で、もう一度解きます.😋)
だから今日はこれについて宣伝しますそれでは始めましょうか?!
解法
そう思います.
そう思います.
DFS
で解けるでしょうres
が票数より長ければ、戻ります.allCases
に追加される.△ここで注意したいのは、私の設計にとって、これは最適な経路ではないかもしれないので、できるだけすべての数を抽出することです!参考にして、このように解いてはいけません.key
値の配列に移動します.コールdfs
を抽出します.私がずっと見逃していた部分は
deepCopy
です私の記憶では、他の言語で似ていても
copy
は過小評価されない部分があります.ここではコピーが浅く、再帰を使うときはずっと低価格のコピーです!
だから忘れた事を思い出したjavascriptでは、オブジェクト全体がオブジェクトタイプであり、元のタイプのように値だけをコピーするのではなく、アドレス値を参照します.
このため,最終的にはDistrict Chingによりこの問題を解決した.△今回発見された深い複製の秘訣を解決します!
12时间ぶりに解けたけど歪んだ仆の耻ずかしいハーモニー.見て役に立つことを望みます!
コード#コード#💻 const makeGraph = tickets => {
const graph = {}
tickets.forEach(([from, to]) => {
graph[from] = (graph[from] === undefined) ? [to] : [ ...graph[from], to ]
})
return graph;
};
const dfs = (start, ticketCounts, graph, nowCase, allCases) => {
if (nowCase.length > ticketCounts) return;
nowCase.push(start);
if (nowCase.length === ticketCounts + 1) allCases.push([ ...nowCase ])
if (graph[start] !== undefined) {
graph[start].forEach((now, idx) => {
const graphStart = [ ...graph[start] ]
graphStart.splice(idx, 1);
const copiedGraph = { ... graph, [start]: graphStart }
dfs(now, ticketCounts, copiedGraph, [ ...nowCase ], allCases);
})
}
return allCases
}
const solution = (tickets) => {
const nowCase = [];
const allCases = [];
const graph = makeGraph(tickets);
dfs("ICN", tickets.length, graph, nowCase, allCases);
const selectedOptimizedCase = allCases.sort()
return selectedOptimizedCase[0];
}
終了時🎉
結局頑固で時間がかかりましたが、
この問題が大きくても小さくても、問題は解決した.
他の人にとっては単純なコードですが、私は自分を誇りに思っています.李想!!!
Reference
この問題について([プログラマー]旅行コース), 我々は、より多くの情報をここで見つけました
https://velog.io/@young_pallete/프로그래머스-여행경로
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
const makeGraph = tickets => {
const graph = {}
tickets.forEach(([from, to]) => {
graph[from] = (graph[from] === undefined) ? [to] : [ ...graph[from], to ]
})
return graph;
};
const dfs = (start, ticketCounts, graph, nowCase, allCases) => {
if (nowCase.length > ticketCounts) return;
nowCase.push(start);
if (nowCase.length === ticketCounts + 1) allCases.push([ ...nowCase ])
if (graph[start] !== undefined) {
graph[start].forEach((now, idx) => {
const graphStart = [ ...graph[start] ]
graphStart.splice(idx, 1);
const copiedGraph = { ... graph, [start]: graphStart }
dfs(now, ticketCounts, copiedGraph, [ ...nowCase ], allCases);
})
}
return allCases
}
const solution = (tickets) => {
const nowCase = [];
const allCases = [];
const graph = makeGraph(tickets);
dfs("ICN", tickets.length, graph, nowCase, allCases);
const selectedOptimizedCase = allCases.sort()
return selectedOptimizedCase[0];
}
結局頑固で時間がかかりましたが、
この問題が大きくても小さくても、問題は解決した.
他の人にとっては単純なコードですが、私は自分を誇りに思っています.李想!!!
Reference
この問題について([プログラマー]旅行コース), 我々は、より多くの情報をここで見つけました https://velog.io/@young_pallete/프로그래머스-여행경로テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol