2人のプログラマーを抽出して追加(Lv 1)
1755 ワード
質問する
https://programmers.co.kr/learn/courses/30/lessons/68644
イニシャルコード
def solution(numbers):
answer = []
numbers.sort()
for i in range(len(numbers)):
for j in range(i+1,len(numbers)):
answer.append(numbers[i] + numbers[j])
answer= list(set(answer))
return answer
結果
これは簡単な問題で、見るとすぐにコードを書くことができます.
でも何を逃したの?
間違った理由!
重複データ削除中にソートが解除され、昇順でソートされませんでした!
set演算後は必ず並べ替えます!
事前にソートするのは意味がないからです.
前の位置合わせを削除->移動後の位置合わせ
修正されたコード
def solution(numbers):
answer = []
for i in range(len(numbers)):
for j in range(i+1,len(numbers)):
answer.append(numbers[i] + numbers[j])
answer= list(set(answer))
answer.sort()
return answer
変更結果
新学の部分
並べ替えが必要な場合
set演算後、ソートが解除されますので、必ず並べ替え直してください!
実は、私が間違った原因を考えたとき、2の中でfor文道の過程で、for文道のrange
for i in range(len(numbers)-1):
for j in range(i+1,len(numbers))
私もこのように修正すべきかどうか考えました.テストして、直接回っても大丈夫です!
このように回っても間違いが起こらないことを初めて知った!
終わりだ!
Reference
この問題について(2人のプログラマーを抽出して追加(Lv 1)), 我々は、より多くの情報をここで見つけました https://velog.io/@kjo1130/프로그래머스-두-개-뽑아서-더하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol