BOJ 2920音階


BOJ问题补丁



テーマ対応
問題の難易度の下で
質問の種類:並べ替え、実装
回答時間:15分

しょかい


  • サイトで初めて質問に答えて入力すべきかどうか分かりませんが、以前Pythonコードにあったように(?)の草案を作る

  • 音階を文字列に1、2、3、…、それを8に変換すべきだと思っていました.
  • arr = ['c', 'd', 'e', 'f', 'g', 'a', 'b', 'C']
    arr2 = ['C', 'b', 'a', 'g', 'f', 'e', 'd', 'c']
    arr3 = ['C', 'd', 'a', 'g', 'f', 'e', 'b', 'c']
  • 配列内部の値は数値であるためpython内蔵関数ソートを用いて比較する
    def solution(arr):
        result = list()
        answer = ''
    
        for i in range(len(arr)):
            if(arr[i] == 'c'):
                result.append(1)
            elif(arr[i] == 'd'):
                result.append(2)
            elif(arr[i] == 'e'):
                result.append(3)
            elif(arr[i] == 'f'):
                result.append(4)
            elif(arr[i] == 'g'):
                result.append(5)
            elif(arr[i] == 'a'):
                result.append(6)
            elif(arr[i] == 'b'):
                result.append(7)
            elif(arr[i] == 'C'):
                result.append(8)
            else:
                return None
    
        if result == sorted(result):
            answer = 'ascending'
        elif result == sorted(result, reverse=True):
            answer = 'descending'
        else:
            answer = 'mixed'
    
        return answer
    
    
    arr = ['c', 'd', 'e', 'f', 'g', 'a', 'b', 'C']
    arr2 = ['C', 'b', 'a', 'g', 'f', 'e', 'd', 'c']
    arr3 = ['C', 'd', 'a', 'g', 'f', 'e', 'b', 'c']
    
    print(solution(arr))
    print(solution(arr2))
    print(solution(arr3))
    

    結果



    why?


    Inputラベルをよく利用して、入出力の例を見て、コンピュータに自分で入力させます!

    に答える

  • 配列を巡回すると、前のインデックスと次のインデックスの値
  • を比較します.
  • 所定条件 a[2] > a[1]の場合、降順を昇順でfalseに変換する
  • 2と同様に、 a[2] < a[1]であれば降順で昇順をfalseに変換する
  • 両方がfalseである場合、出力混合
  • a = list(map(int, input().split(' ')))
    
    ascending = True
    descending = True
    
    for i in range(1, 8):
        if a[i] > a[i-1]:
            descending = False
        elif a[i] < a[i-1]:
            ascending = False
    
    if ascending:
        print('ascending')
    elif descending:
        print('descending')
    else:
        print('mixed')
    
    # >>> 1 2 3 4 5 6 7 8 ascending
    # >>> 8 7 6 5 4 3 2 1 descending
    # >>> 1 3 4 5 6 7 8 2 mixed