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))
私もこのように修正すべきかどうか考えました.

テストして、直接回っても大丈夫です!

このように回っても間違いが起こらないことを初めて知った!
終わりだ!