티스토리 뷰

 

[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) 

 

반응형
댓글
반응형