본문 바로가기

코딩테스트 준비/프로그래머스

[프로그래머스] 두 개 뽑아서 더하기

반응형

 

 

 

안녕하세요~

27년차 진로탐색꾼 조녁입니다!!

1일 1코테 7일차!!! 오늘 푼 문제는 프로그래머스 월간 코드 첼린지 시즌1 문제입니다.

 

· 문제명 : 두 개 뽑아서 더하기

· 사용 언어 : Python3

· 난이도 : Level1

· 문제 설명 

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

 

· 제한사항

  • numbers의 길이는 2 이상 100 이하입니다.
  • numbers의 모든 수는 0 이상 100 이하입니다.

· 입출력 예

numbers result
[2,1,3,4,1] [2,3,4,5,6,7]
[5,0,2,7] [2,5,7,9,12]

 

· 입출력 예 설명

입출력 예 #1

  • 2 = 1 + 1 입니다. (1이 numbers에 두 개 있습니다.)
  • 3 = 2 + 1 입니다.
  • 4 = 1 + 3 입니다.
  • 5 = 1 + 4 = 2 + 3 입니다.
  • 6 = 2 + 4 입니다.
  • 7 = 3 + 4 입니다.
  • 따라서 [2,3,4,5,6,7] 을 return 해야 합니다.

입출력 예 #2

  • 2 = 0 + 2 입니다.
  • 5 = 5 + 0 입니다.
  • 7 = 0 + 7 = 5 + 2 입니다.
  • 9 = 2 + 7 입니다.
  • 12 = 5 + 7 입니다.
  • 따라서 [2,5,7,9,12] 를 return 해야 합니다.

 

정답코드

def solution(numbers):
    answer = []
    
    #악수받는 사람들 
    for i in range(1,len(numbers)):
        b = numbers[i:]
        
        #악수 진행 및 결과 append
        for n in range(len(b)): 
          answer.append(b[n]+numbers[i])
	
    #중복 제거 및 오름차순 정렬
    answer = sorted(list(set(answer)))
    return answer

 

간단풀이 

 

1. 중학교 수학시간에 악수하는 문제 풀듯이 생각했고 악수자(i번째 숫자) 와 악수받을 사람들(i+1:~) 로 나눠서 다 더해줬다.

 

2.중복을 제거하기 위해 set으로 바꿨다가 다시 list로 바꿨다. (집합에서는 원소의 중복 미허용하므로 중복 제거해준다.)

 

3. 입출력 예시에선 이상없이 나오지만, sorted로 정렬해주지 않으면 특정 예시에서는 틀렸다고 뜬다. (그러니까 정렬해줘야한다.)

반응형