スポンサーリンク

【LeetCode】51. N-Queens 解答・解説【Python】

スポンサーリンク
スポンサーリンク
この記事は約4分で読めます。

 

はじめに

LeetCodeの問題を解答します。

なるべく、問題の和訳と詳細なコメントを書いています。

余裕があれば、複数のアプローチの解答と、実際の面接を想定して英語での解法やコメントを書いています。

 

これまでこのサイトでメモしてきた問題はこのページに全て載せています。

LeetCode 解答・解説記事一覧

 

二分探索、連結リストなど、テーマを絞って集中的に解きたい方は以下の記事が有用です。

LeeetCodeの問題をアルゴリズムとデータ構造による分類しました。

 

また、LeetCodeではAtcoderと違ってクラスと関数を定義して解答します。

LeetCodeに特有の内容など、知っておくと役に立つかもしれないことをまとめています。

はじめてLeetCodeに触れる方はこちらの記事も役に立つと思います。

解答前に知っておくと役に立つかもしれない情報

 

 

ポイント

    • backtrack

 

 

詳細

 

問題

 

原文

The n-queens puzzle is the problem of placing n queens on an n x n chessboard such that no two queens attack each other.

Given an integer n, return all distinct solutions to the n-queens puzzle. You may return the answer in any order.

Each solution contains a distinct board configuration of the n-queens’ placement, where 'Q' and '.' both indicate a queen and an empty space, respectively.

 

Example 1:

Example 2:

 

Constraints:

  • 1 <= n <= 9

 

 

内容(和訳)

n-queensパズルは、n x nのチェス盤上にn個のクイーンを配置する際に、2つのクイーンが互いに攻撃しないようにする問題です。

整数nが与えられた場合、n-queensパズルのすべての異なる解を返します。解答の順序は任意です。

各解は、n-queensの配置における異なる盤面の構成を含みます。ここで、’Q’と’.’はそれぞれクイーンと空白を表します。

 

※trancelated by ChatGPT

 

解答

 

解答1:Python, backtrack

有名なNクイーン問題。nxnマスの盤面にn個のクイーンの置き方は何通りあるかを調べる。

クイーンを置くとき、お互いの移動範囲にクイーンが居ないことが条件。

条件を満たす組み合わせ(クイーンを試しにおいていく)を調べていき、当てはまらない場合は前に置いたクイーンを取り除いてまた別の条件を満たす場所にクイーンをおいていくことを繰り返す。

 

 

なるべく英語でコメントを付けるようにしたい。実際の面接は英語なので。

 

解答2:Python, backtrack

ほぼ同じコード。解答1とは違い、関数内に関数を置くのではなく独立させた。

書き換えが自由にできるようになりたい。

 

 

終わりに

補足・参考・感想

 

問題を分類しました。テーマごとに集中して問題を解くことができます。

LeeetCodeの問題をアルゴリズムとデータ構造による分類

 

LeetCodeに特有の内容など、知っておくと役に立つかもしれないことをまとめました。

解答前に知っておくと役に立つかもしれない情報

 

 

他の問題もどうぞ

 

前:216. Combination Sum III

 

次:

 

LeetCode 解答・解説記事一覧

 

コメント