https://www.acmicpc.net/problem/3052
문제 풀이
- 10개의 수를 리스트에 담는다.
- 리스트에서 요소 하나씩 순회하면서 42로 나눈 나머지 값을 저장한다.
- 중복을 제거하고 그 개수를 출력한다.
- 중복을 제거할땐 set을 활용한다.
solution
import sys
Nber_list = [int(sys.stdin.readline().strip()) for _ in range(10)]
# map을 활용하여 Nber_list의 요소 하나씩 42로 나눈 나머지 값을 저장함
remainder_list = list(map(lambda x: x%42, Nber_list)) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# set을 이용하여 중복을 제거된 값을 반환받음
unique_remainder_list = set(remainder_list) # {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
print(len(unique_remainder_list)) # 10
set()
- 유일한 값들의 모음
- 중괄호 혹은 set()을 통해 생성
- 빈 Set을 만들기 위해 반드시 Set()으로 생성
- 순서가 없고 중복된 값이 없음
- 별도의 값에 접근할 수 없음
- 변경 가능, 반복 가능
- 값 추가는 .add() / 값 삭제는 .remove()
set 활용 case
- 다른 컨테이너에서 중복된 값을 쉽게 제거 가능.
- 주의! 순서가 무시되므로 순서가 중요하면 사용할 수 없음.
- 리스트에서 고유한 지역의 개수 구하는 법
# set 사용하지 않는 방법
my_list = ['서울','서울','대전','광주','서울','대전','부산','부산']
result = []
for value in my_list :
if value not in result :
result.append(value)
print(len(result)) # 4
# set 사용
print(set(my_list)) # {'부산', '광주', '서울', '대전'} / 순서 무작위
print(len(set(my_list))) # 4
set의 개념을 활용하여 데이터의 차집합, 교집합, 합집합을 이용하고 싶으면 아래의 글을 참고해주세요
2023.01.15 - [algorithm/백준] - [PYTHON]4673 셀프넘버 set()/중복제거/차집합/합집합/교집합
'algorithm > 백준' 카테고리의 다른 글
[PYTHON] 8958 OX 퀴즈 - 등차 수열 / for (0) | 2023.01.26 |
---|---|
[PYTHON] 1546 평균 (0) | 2023.01.26 |
[PYTHON] 2908 상수 - reverse() (2) | 2023.01.26 |
[PYTHON] 1152 단어의 개수 - split 정리 (0) | 2023.01.26 |
[PYTHON] 1157 단어 공부 - 문자열 변경 메서드 정리(대문자, 소문자, 대문자 소문자 반대로 반환, 첫 글자 대문자) (0) | 2023.01.26 |
댓글