오랑우탄의 반란
프로그래머스 | 두 개 뽑아서 더하기 (Python3) SET함수 본문
반응형
오늘도 오랑이는 문제를 풉니다.
두 개 뽑아서 더하기
풀이 과정
리스트의 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))
오랑우탄이 영어를 하고 오랑이가 코드마스터가 되는 그날까지~
반응형
'PYTHON > 프로그래머스' 카테고리의 다른 글
프로그래머스 | 가장 가까운 같은 글자 (Python3) (0) | 2024.07.15 |
---|---|
프로그래머스 | 문자열 내 마음대로 정렬하기 (Python3) SORT 함수 (0) | 2024.07.12 |
프로그래머스 | K번째수 (Python3) (0) | 2024.07.12 |
프로그래머스 | 숫자 문자열과 영단어 (Python3) 리스트, 딕셔너리 (0) | 2024.07.12 |
프로그래머스 | 시저 암호 (Python3) 리스트, ORD, CHR (2) | 2024.07.11 |