프로그래머스 두 개 뽑아서 더하기(Lv1)

김준오·2021년 1월 29일
1

알고리즘

목록 보기
2/91
post-thumbnail

문제

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하는 과정에서 정렬이 풀리면서 오름차순으로 정렬이 안된것!

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))

이렇게 수정해야 하는것 아닌가 하는 생각도 했었는데


테스트 해보니 그냥 돌려도 별 상관없다!

심지어 이렇게 돌려도 에러가 안뜬다는걸 처음 알았다!..

끝!

profile
jooooon

0개의 댓글

관련 채용 정보