개발자일걸요..?

두 개 뽑아서 더하기 본문

알고리즘코딩/Programmers

두 개 뽑아서 더하기

Re_A 2021. 7. 24. 16:55
728x90
반응형

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

 

코딩테스트 연습 - 두 개 뽑아서 더하기

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한

programmers.co.kr

(프로그래머스 > 코딩테스트 연습> 월간 코드 챌린지1 > 두 개 뽑아서 더하기)

 


 

<문제>

 

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.

 

 


 

<내가 작성한 정답 코드>

import itertools
def solution(numbers):
    pick = list(itertools.combinations(numbers,2))
    answer = []
    for i in range(0, len(pick)):
        answer.append(pick[i][0]+pick[i][1])
    return sorted(list(set(answer)))

 

 

<내가 작성한 오답 코드>

import itertools
def solution(numbers):
    pick = list(itertools.combinations(numbers,2))
    answer = []
    for i in range(0, len(pick)):
        answer.append(pick[i][0]+pick[i][1])
    return list(set(answer))

 

 


 

<추가로 알게된 점>

 

set을 이용한 정렬과 sorted를 이용한 정렬의 차이

ex) numbers = [0,1,2,3,100,1123] 일때,

list(set(answer))           = [1, 2, 3, 100, 1123, 4, 101, 1124, 5, 102, 1125, 103, 1126, 1223]

sorted(list(set(answer))) = [1, 2, 3, 4, 5, 100, 101, 102, 103, 1123, 1124, 1125, 1126, 1223]  

즉, set을 이용해 정렬하고자 하는 것은 불가능하다. => set은 중복되는 값을 없애는 것은 가능하나 특별히 순서를 가지진 않는다.

 

+) set 특징 : 순서가 없다, 고유한 값을 가진다(중복 없음), mutable한 객체이다.

 

반응형

'알고리즘코딩 > Programmers' 카테고리의 다른 글

음양 더하기  (0) 2021.07.24
문자열 다루기  (0) 2021.07.24
로또의 최고 순위와 최저 순위  (0) 2021.07.24
폰켓몬  (0) 2021.07.24
숫자 문자열과 영단어  (0) 2021.07.23
Comments