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를 참고해서 더 간단한 코드를 짜도록 연습해야겠다.
'2021 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] Lv.1 - 같은 숫자는 싫어_파이썬 (0) | 2020.11.26 |
---|---|
[프로그래머스] Lv.1 - 두 정수 사이의 합_파이썬 (0) | 2020.11.25 |
[프로그래머스] Lv.1 - 문자열 내 p와 y의 개수_파이썬 (0) | 2020.11.25 |
[프로그래머스] Lv1 - 3진법 뒤집기_파이썬 (0) | 2020.11.24 |
[프로그래머스] Lv1 - K번째 수_파이썬 (0) | 2020.11.01 |
댓글