[Baekjoon]2841エイリアンギター演奏Python


🏷 質問する



💡 コード#コード#

from sys import stdin

N, P = map(int, stdin.readline().split())
melody = [list(map(int, stdin.readline().split())) for _ in range(N)]

# 기타의 1~6번줄 각각에 대한 리스트 생성
strings = [[] for _ in range(7)]

res = 0

# 입력받은 음계(줄, 프렛)
for l, f in melody:
    # 해당 줄에 프렛이 하나도 없으면 새로 추가
    if len(strings[l]) == 0:
        strings[l].append(f)
        res += 1

    # 해당 줄에 프렛이 있는 경우
    else:
        # 연주하려는 프렛이 기존의 프렛보다 높은 음이라면, 새로 추가
        if f > strings[l][-1]:
            strings[l].append(f)
            res += 1
            print(strings[l])
        # 연주하려는 프렛이 기존의 프렛과 같은 음이라면, 그냥 지나감
        elif f == strings[l][-1]:
            print(strings[l])
            continue
        # 연주하려는 프렛이 기존의 프렛보다 낮은 음이라면, 연주하려는 프렛보다 높은 음들을 모두 pop
        else:
            while strings[l] and f < strings[l][-1]:
                strings[l].pop()
                res += 1
            if strings[l] and f == strings[l][-1]:
                continue
            # 그리고 나서 연주하려는 프렛 추가    
            strings[l].append(f)
            res += 1
print(res)

🔑


勘定科目のメソッド
別の行数でリストを作成する
  • 入力のメロディを確認し、行にFRETがない場合は行を追加します.そうでない場合は、条件を3つに分けて確認します
  • を演奏するボールペンが既存のボールペンより高いとしたら?新しいカウントを追加した結果の値2479182
  • を演奏したいボールペンは、既存のボールペンと同じですか?¥¥¥
  • を演奏したい円卓が既存の円卓より低い場合は?
    演奏するフィレットより高いすべてのトーンにpop()を追加し、新しいトーンを追加し、
  • をカウントします.
    💡 最後のケースの条件文では、while strings[l]:は考慮されていないため、インデックスエラーが発生しています.😂
    まずそのギターの弦にフレットがあるかどうか確認しなければなりませんが、無視しました.ははは、、、