PROGRAMMERSレベル1 k番号

5096 ワード

🔗 ソース


プログラマレベル1:k

📄 質問する



📝 マイコード(修正前)

def solution(array, commands):
    answer = []
    for c in commands:
        answer.append(sorted(array[c[0]-1:c[1]])[c[2]-1])
    return answer

悩む


もっと可読性を高める方法はありませんか?
問題で与えられた「i,j,k」を変数名として使いたい.
あるいは、コンパクトに編むなら、いっそ一本の糸に縮めたい.

🛠 解決策

  • for文、コマンドの行を区切る0、1、および2つの要素
  • mapとlambda
  • を使用

    💡 マイコード(1)

    def solution(array, commands):
        answer = []
        for i, j, k in commands:
            answer.append(sorted(array[i-1:j])[k-1])
        return answer

    💡 マイコード(2)

    def solution(array, commands):
        return list(map(lambda x: sorted(array[x[0]-1:x[1]])[x[2]-1], commands))

    悟る


    どのコードがより良いコードなのか判断できません.(
    個人的には1番コードの方が読みやすいと思います.
    より良いコード基準を知る方法を考えます.
    for文の要素を区切ることを忘れない:)
    式を簡潔に書きたい場合は、lambda:)を使用することを考慮してください.