[伯俊]1955パスワードPython


暗号


質問する


俊表と勢俊は,ソリューションについて議論する際,他の人に聞かれないように,互いに情報を交換する際に暗号化により情報を交換する.パスワードの作成方法は次のとおりです.まず、1、1から、暗号化する文字列を上から下の順に埋めます.次に、一番下の行を入力すると、右の列で同じ手順を繰り返します.
文字列「abcdefghijkl」を3列に暗号化すると.これで次のように表に記入できます.
aeibfjcgkdhl
そして左→右、右→左、左→右...を選択して文字列を再作成します.以上の場合は「aeijfbcgklhd」となります.
私たちがしなければならないことは以下の通りです.暗号化された文字列とカラム数が指定されると、元の文字列を取得するためのプログラムが作成されます.

入力


列の個数はK(1≦K≦20)であり、第2の動作は暗号化文字列(いずれも英語小文字)である.(文字列の長さは200未満で、Kの倍数です.)

しゅつりょく


最初の行は元の文字列を出力します.

解決策

  • は、サンプル入力に基づいてマトリクス(列は入力、動作文字長はnで割った)を簡単に作成する(動作偶数入力、奇数入力は逆).
  • まず
  • 行を印刷しました.
  • n = int(input())
    s = input()
    l = len(s)
    #예제와 같은 행렬을 만든다. 
    lst = [[0]*(n) for _ in range(l//n)]
    
    x = -1
    #행의 길이만큼 돌면서 
    for i in range(l//n) :
        #짝수이면 그대로 넣고 
        if i %2 ==0 :
            for j in range(n) :
                x+=1 
                lst[i][j] = s[x]
        #홀수이면 반대로 넣는다. 
        else :
            for j in range(n-1,-1,-1) :
                x += 1
                lst[i][j] = s[x]
    result = []
    #열 우선으로 출력한다. 
    for j in range(n) :
        for i in range(l//n) :
            result.append(lst[i][j])
    
    print(''.join(map(str,result)))