0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

paizaラーニング問題集「【マップの扱い 2】マップの書き換え・縦横」を解いてみた

Posted at

▼考え方

ポイントになる考え方1.~4.を以下に示します。

1.与えられた座標のマス(y,x)の1つ上の行(縦:y-1)、同じ行(縦:y)、1つ下の行(縦:y+1)、の順に処理します。

2.1つの行につき、与えられた座標のマス(y,x)の左隣(横:x-1)、同じ(横:x)、1つ右隣(横:x+1)、の順に処理します。

3.縦方向の添え字jや横方向の添え字iがマップの範囲を超える場合は、処理せず次のループに入ります。

4.与えられた座標のマス(y,x)の1つ上の行および1つ下の行において、(y,x)の上下左右に含まれないマスは処理しません。

▼コード


# 横方向 x,W,i
# 縦方向 y,H,j

########## 処理0(準備) インプット,リスト定義など ###########

H,W = map(int,input().split())

S = [[0 for i in range(W)] for j in range(H)]

for j in range(H):
    S[j] = list(input())
    
y,x = map(int,input().split())

########## 処理1 マップの書き換え、マップの出力 ##########

# 考え方1.
for j in range(y-1,y+2,1):

    # 考え方2.
    for i in range(x-1,x+2,1):

        # 考え方3.
        if (j < 0 or j > H-1) or (i < 0 or i > W-1):
            continue

        # 考え方4.
        if (j == y-1 or j == y+1) and (i != x):
            continue
        
        else:
            if S[j][i] == ".":
                S[j][i] = "#"
            else:
                S[j][i] = "."

for j in range(H):
    print(*S[j],sep='')
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?