地方感(砂時計)


ナビゲーション&シミュレーション(文字列、1 Dおよび2 Dリストナビゲーション)


に質問


地方感(砂時計)


賢洙は柿を作るために、柿を削って庭に干している.懸垂した庭はN*Nメッシュプレートからなり,懸垂して各メッシュユニットにおけるカールした柿の数を決定する.
しかし太陽の位置によって特定の位置の柿は乾きにくい.したがって、グリッドの行に対して左または右に回転することで、懸垂は位置を変更し、すべてのテクスチャをスムーズにすることができます.
回転コマンド情報が20.3の場合、下図のように2行目を左に3回転させます.

1番目の数字は行番号、2番目の数字は方向、0は左、1は右、3番目の数字は回転メッシュの数です.
M個の回転命令を実行した後、庭の砂時計の形をした領域に全部で何個の柿があるかを出力するプログラムを作成します.以下に示します.

■説明の入力
1行目は自然数N(3<=N<=20)を主とし、Nは奇数である.
2行目から、行ごとにN個の自然数があります.
この自然数は各格子の柿の個数で、各格子の柿の個数は100を超えない.
次の行はM(1<=M<=10)で、次にM行です.
■出力説明
総感覚の個数を出力します.
■入力例1
5
10 13 10 12 15
12 39 30 23 11
11 25 50 53 15
19 27 29 37 27
19 13 30 13 19
3
2 0 3
5 1 2
3 1 4
■出力例1
362

コード#コード#💻

import sys
#sys.stdin=open("input.txt", "rt")  # read text
n = int(input())
a = [list(map(int, input().split())) for _ in range(n)]   # 2중 리스트

m = int(input())
for i in range(m):
    h, t, k = map(int, input().split()) # 행, 방향, 횟수
    if t == 0:    # 왼쪽 방향
        for _ in range(k):
            a[h-1].append(a[h-1].pop(0))
    else:
        for _ in range(k):
            a[h-1].insert(0, a[h-1].pop())  # pop() : 맨 뒤에서 꺼냄

res = 0
s = 0
e = n - 1

for i in range(n):
    for j in range(s, e+1):
        res += a[i][j]
    if i < n // 2:
        s += 1
        e -= 1
    else:
        s -= 1
        e += 1
    
print(res)
リファレンス
  • インフラストラクチャ:Pythonアルゴリズム回答