はじめに
前回の記事で「データセンター」をクリアして、今回は「ギャングのアジト」をクリアしたので書こうと思います。
難しくてまだクリアできてない方などに参考にしてもらえると嬉しいです。
【問題】
解答
今回もPython3を選択して書いてみました。
# coding: utf-8
# 自分の得意な言語で
# Let's チャレンジ!!
N = int(input()) # ピクセルアートの大きさを整数として受け取る
result = "Yes" # 答えをいれる変数
for i in range(N): # Nの数繰り返す
input_str = input() # 入力を受け取る
b = list(map(int, input_str.split())) # スペースで区切ってリストに変換
if b != b[::-1]: # スライスを使って左右対称かを判断
result = "No" # 左右対称じゃない場合にNoを代入する
print(result) # 結果を表示
コード解説
上のコードの解説をすると
N
(ピクセルアートの大きさ)を整数としてinput_line
に代入
N = int(input())
答えをいれる変数input_line
を作成して初期値を"Yes"
にする
result = "Yes"
for文でN
の数だけ下の処理を繰り返す
- 入力を受け取る
- スペースで区切ってリストに変換
- if文とスライス(
b[::-1]
の部分)を使って、もし、左右対称じゃないならばresult
に"No"
を代入
左右対称かの判断は、Pythonのスライスを使ってリストb
を反転させて、反転させる前のリストb
と反転後のリストb
が同じかをif文で確認しています。
例(左右対称)
[1, 0, 1, 0, 1]
をスライスで反転させると
[1, 0, 1, 0, 1]
になって同じ
例(左右対称じゃない)
[1, 1, 0, 0, 0]
をスライスで反転させると
[0, 0, 0, 1, 1]
になって同じにならない
for i in range(N): # Nの数繰り返す
input_str = input() # 入力を受け取る
b = list(map(int, input_str.split())) # スペースで区切ってリストに変換
if b != b[::-1]: # スライスを使って左右対称かを判断
result = "No" # 左右対称じゃない場合にNoを代入する
スライスについてはわかりやすい記事があったので紹介します。
こんな感じのコードで問題を解くことができました。
最後に
記事を最後までお読みいただきありがとうございます!
今回は難しかったです。Pythonのスライス操作をしたことがなかったので解き方が思い浮かばなくて結構苦戦しました。次回は「自然の残る公園」をしようと思っています。次回も見てくださると嬉しいです。
ではまた他の記事で会いましょう!またねーヾ(´∀`)ノ