본문 바로가기
2021/코딩테스트

[프로그래머스] Lv1 - 두 개 뽑아서 더하기_파이썬

by 에이도 2020. 11. 2.

 

https://programmers.co.kr/learn/courses/30/lessons/68644

 

 

def solution(numbers):
    answer = []
    if len(numbers) >= 2 and len(numbers) <=100:
        for ii in numbers : 
            if ii >= 0 and ii <=100 :
                
                for i in numbers:
                    n = numbers.index(i)
                    

                    for j in numbers[n+1:]:
                        a = i+j
                        if a not in answer:
                                
                            answer.append(a)
                        else : 
                            continue
            else :
                break

        answer.sort()
        # print(answer)
    return answer

 

문제 제한사항에 따라 numbers (= 리스트) 길이 2 이상 100 이하,

numbers 안의 elements가 모두 0이상 100 이하의 수 이다.

따라서 실행 시 numbers의 길이와 elements를 if문으로 제약을 두고

조건에 맞을 때만 실행하도록 구성했다.

 

numbers의 길이 ( 2이상 100이하) 제약을 거는건 쉽게 했지만,

numbers의 요소들이 100이하의 양수가 맞는지 검사하는 간단한 방법이 있는지 모르겠어서

결국 요소들을 하나하나 꺼내서 검사하는 방식으로 진행했다. (아마 시간이 딜레이 될 것같다..)

 

그렇게 조건에 맞게 맞는 numbers를 입력 받았다면,

 

그 numbers에서 첫 번째 요소인 i를 꺼낸다.

중복 더하기를 피하기 위해서 numbers에서 i의 index를 n으로 선언했다.

그리고 i와 i뒤에 있는 j(n+1번째) 요소와 더하기 한 결과를 a로 선언했다.

 

이 때, a 를 바로 answer에 append한다면 중복 된 수가 나올 수 있으므로

answer에 a가 없을 때만 append 하도록 if문으로 제약을 걸었다.

 

그리고 반복하여 최종적으로 answer에 담겨져 있는 덧셈의 결과 값들을 오름차순으로 정렬했다.

 

--------------------------------------------------------------------------------------------------------------------

<추가로 하면 좋을 것>

제약을 if문 아닌 다른 방법으로 제약거는 방법을 찾아야겠다.

Library를 참고해서 더 간단한 코드를 짜도록 연습해야겠다.

 

 

 

댓글