トップページ -> AOJの解答例 -> ITP2_4の解答例

ITP2_4の解答例(Python)

配列の操作 特にスライスがテーマでしょうか?

1. ITP2_4_A: Min-Max

指定された区間を逆順にします. スライスで切り出した後にreversedを使っています.

# ITP2_4_A
n = input()
N = list(map(int,input().split(" ")))

m = int(input())

for _ in range(m):
    query =  list(map(int,input().split(" ")))
    N[query[0]:query[1]] = list(reversed(N[query[0]:query[1]]))
    
print(*N)

2. ITP2_4_B: Rotate

リストの要素を指定された位置に移動します. 元のリストと操作用のリストの2つを用意しています.

# ITP2_4_B
n = input()
# リストを2つ用意しました
N = list(map(int,input().split(" ")))
B = N[:] # B: Nをコピーしたリスト

ite = int(input())

for _ in range(ite):
    b,m,e = list(map(int,input().split(" ")))
    for k in range(e-b):
        B[b+(k+(e-m))%(e-b)] = N[b+k]
        
    # 一通りの操作が終わったらコピーします
    N = B[:]
    
print(*N)

3. ITP2_4_C: Swap

指定された2要素の入れ替えをする問題です. tmpを経由して,入れ替えをしています.

# ITP2_4_C
n = input()
N = list(map(int,input().split(" ")))

ite = int(input())

for _ in range(ite):
    b,e,t = list(map(int,input().split(" ")))
    for k in range(e-b):
        tmp = N[b+k]
        N[b+k] = N[t+k]
        N[t+k] = tmp
        
print(*N)

4. ITP2_4_D: Lexicographical Comparison

Setにして重複を取り除いた後にlistに直してsortしています. sorted(Set)から順番に出力してもいいです.

# ITP2_4_D 単純にsetにするだけだと順序を保ってくれない
n = input()
N = list(set(map(int,input().split(" "))))
N.sort()
print(*N)

<- 前へ戻る 【目次に戻る】 次へ進む ->