不定期プログラミング覚え書き

青コーダーと黄コーダーの間を彷徨う社会人プロコン勢が余力のあるときに復習した内容をまとめるブログ

yukicoder #360: 増加門松列

問題

No.360 増加門松列 - yukicoder
任意の連続する3数が門松列であり、右側の方が大きい時それを増加門松列という。
7つの数字が与えられるので、並べ替えて増加門松列が作れるか答えよ、という問題

考えたこと

7要素程度なら全部の順列についてチェックすれば良い。
難易度更新されたけれど、359よりもこっちの問題が断然簡単だと思った。

コード

pythonでnext_permutation的なものあるかな?と調べつつ実装。
冷静に考えて前にも調べたことある気がする。

import itertools
def isKadomatsu(A):
    if A[0]==A[1] or A[1]==A[2] or A[0]==A[2]:
        return False
    elif A[0]<A[1] and A[1]>A[2]:
        return True
    elif A[0]>A[1] and A[1]<A[2]:
        return True
    return False
X=map(int,raw_input().split())
for line in itertools.permutations(X):
    ok=True
    for i in range(5):
        B=[line[i],line[i+1],line[i+2]]
        if( isKadomatsu(B) and B[0]<B[2] ):
            continue
        else:
            ok=False
            break
    if ok:
        print "YES"
        exit()
print "NO"