티스토리 뷰
[Python] 백준 알고리즘 온라인 저지 3052번 : 나머지
Python3 코드
nums = set() # 중복되는 요소를 제거
for _ in range(10):
i = int(input())
nums.add(i%42) # 집합자료형에 원소를 추가할 때 add 함수를 사용
print(len(nums))
Python3 코드 풀이
1. 코드 풀이의 전체적인 내용 요약
이번 문제는 10개의 수를 입력받으면 각 수를 42로 나누어서 나머지를 구하고 중복되는 값을 제거한 이후 원소가 몇 종류의 숫자가 있는지를 출력하는 문제이다.
나머지는 % 연산자를 사용해서 구하였고 집합 자료형의 속성을 이용해서 중복되지 않는 요소만 남겨두도록 하여 문제를 풀었다. 코드를 상세히 보면 아래와 같다.
2. 입력받는 숫자의 나머지를 구해서 집합에 더한다.
nums = set() # 중복되는 요소를 제거
for _ in range(10):
i = int(input())
nums.add(i%42) # 집합자료형에 원소를 추가할 때 add 함수를 사용
2-1. 입력받는 숫자는 10개이기 때문에 for문은 10번을 반복한다.
2.2. 입력받는 수를 변수 i에 선언하고서 % 연산자로 42를 나눈 나머지를 구해서 add 함수를 이용해서 집합에 요소를 추가한다. 리스트에 요소를 추가할 때는 append 함수를 사용하지만 집합에 추가할 때는 add 함수를 사용한다.
2-3. 처음에 빈 set을 생성할 때는 set( ) 함수를 이용해서 생성해야 한다. 집합이 출력될 때는 중괄호 { }에 묶인 값이 출력되는데 nums={ } 형태로 표현하면 딕셔너리 자료형으로 선언되기 때문이다.
3. 리스트 자료형을 생성하는 코드를 작성한다면 아래와 같다.
nums = []
for _ in range(10):
i = int(input())
nums.append(i%42)
nums2 = set(nums)
위 문제를 풀었던 코드에서 집합을 생성한 자리에서 리스트를 생성하는 코드로 바꾸는 경우는 아래와 같다. 42로 나눈 나머지를 리스트 자료형으로 만든 이후 set 함수를 이용해서 중복요소를 제거한 코드이다.
set( ) 함수는 집합 자료형을 생성할 때뿐만 아니라 다른 iterable 자료형을 집합 자료형으로 변환하는데도 사용할 수 있다. 위와 같이 하면 nums라는 리스트 자료형을 집합 자료형으로 변환할 수 있다. 집합 자료형으로 변환되면 리스트에 있던 중복되는 요소는 제거할 수 있다. 위와 같이 코드를 작성한다면 마지막에 요소의 개수를 셀 때는 len 함수를 사용할 때 nums2 집합의 개수를 세도록 코드를 작성하면 된다. -> len(nums2)
'파이썬 스킬업 > 백준 알고리즘 연습' 카테고리의 다른 글
백준 1546번 [파이썬] 평균 (1) | 2020.07.05 |
---|---|
백준 2577번 [파이썬 알고리즘] : 숫자의 개수 _ count함수 활용 (4) | 2020.07.05 |
백준 2562번 [파이썬 알고리즘] 최댓값 (0) | 2020.07.05 |