오랑우탄의 반란

프로그래머스 | 두 개 뽑아서 더하기 (Python3) SET함수 본문

PYTHON/프로그래머스

프로그래머스 | 두 개 뽑아서 더하기 (Python3) SET함수

5&2 2024. 7. 12. 15:38
반응형

 

오늘도 오랑이는 문제를 풉니다.

 

두 개 뽑아서 더하기

 

풀이 과정

리스트의 combination 을 구해서 각각의 값을 더하는 문제입니다. 

전에 비슷한 문제가 있었는데 어떤 거였는지 기억이 안 나네요..

어쨌든 전과 동일하게 numbers 의 i 와 i+1 인 j 에 대해 각각 추출해서 더하면 됩니다.

def solution(numbers):
    answer = []
    for i in range(len(numbers)):
        for j in range(i+1,len(numbers)):
            answer.append(numbers[i]+numbers[j])
    return sorted(answer)

 

다만 위와 같이 작성했더니 중복값이 나와서 틀렸습니다.

파이썬 중복값 제거를 위해서는 set() 함수를 사용하면 됩니다.

 

set 함수

answer = set()  # 빈 집합으로 지정해 answer.add() 로 값 넣어주기
set(answer) # 마지막에 set 안에 넣어주기

 

set() 함수는 집합(set) 로 인수를 변환시켜주는데, 이때 중복값을 허용하지 않고 순서가 없다는 특징을 가집니다. 

 

set 값 변경

  • set 에 값 넣어주기 answer.add()
  • set 에 값 여러 개 넣어주기 answer.update()
  • set 에서 값 제거하기 answer.remove()

 

set 집합 특징

s1 = set([1,2,3,4,5])
s2 = set([2,3,5,6,7])

 

교집합

  • &
  • .intersection
s3 = s1 & s2
print(s3)
# {2,3,5}

s3 = s1.intersection(s2)
print(s3)
# {2,3,5}

 

합집합

  • |
  • .union
s3 = s1 | s2
print(s3)
# {1,2,3,4,5,6,7}

s3 = s1.union(s2)
print(s3)
# {1,2,3,4,5,6,7}

 

차집합

  • -
  • .difference
  • 차집합은 순서에 따라 결과가 달라짐 주의 
s3 = s1 - s2
print(s3)
# {1,4}

s3 = s2 - s1
print(s3)
# {6,7}

s3 = s1.difference(s2)
print(s3)
# {1,4}

s3 = s2.difference(s1)
print(s3)
# {6,7}

 

이런 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])
    return sorted(set(answer))

 

 

 

오랑우탄이 영어를 하고 오랑이가 코드마스터가 되는 그날까지~

 

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

반응형