본문 바로가기

알고리즘, 자료구조

[백준| 단계별로 풀어보기 4단계 1차원 배열 | Python] 3052번 나머지

1. 문제 목적

이 문제의 목적은 모듈로 연산자료 구조를 활용하는 방법을 학습하는 데 있습니다. 모듈로 연산은 프로그래밍에서 자주 사용되는 연산 중 하나로, 특정 값으로 나눈 나머지를 구하는 연산입니다. 이 문제를 통해 모듈로 연산의 활용 방법과, 중복을 제거하며 데이터를 효율적으로 관리하는 자료구조인 세트(set)의 사용법을 익힐 수 있습니다.

2. 핵심 개념

  • 모듈로 연산(%): 특정 수로 나눈 나머지를 구하는 연산입니다. 이 문제에서는 입력된 수를 42로 나눈 나머지를 구합니다.
  • 세트(Set): 파이썬의 기본 자료구조 중 하나로, 중복된 값을 허용하지 않으며 순서가 없는 컬렉션입니다. 세트를 사용하여 중복 없이 나머지의 종류를 쉽게 관리할 수 있습니다.

3. 문제 해결 절차

  1. 사용자로부터 10개의 숫자를 입력받습니다.
  2. 각 숫자를 42로 나눈 나머지를 계산합니다.
  3. 계산된 나머지를 세트에 저장하여 중복을 제거합니다.
  4. 세트에 저장된 나머지의 개수, 즉 세트의 크기를 출력합니다. 이 크기가 곧 서로 다른 나머지의 개수입니다.

4. 코드 작성

# 입력된 숫자들을 저장할 리스트 생성
numbers = []

# 입력된 숫자들의 모듈로 42 연산 결과를 저장할 리스트 생성
remainders = []

# 10번 반복하여 숫자 입력받기
for _ in range(10):
    number = int(input())
    numbers.append(number)

# 입력받은 숫자들을 42로 나눈 나머지 계산하여 리스트에 추가
for number in numbers:
    remainders.append(number % 42)

# 중복을 제거한 나머지의 리스트 생성
unique_remainders = set(remainders)

# 중복 없는 나머지의 개수 출력
print(len(unique_remainders))

학습을 위한 쉬운 코드 분석

  • numbers = []와 remainders = []: 입력된 숫자와 그 나머지를 저장할 두 개의 리스트를 생성합니다.
  • 첫 번째 for 반복문은 사용자로부터 10개의 숫자를 입력받아 numbers 리스트에 저장합니다.
  • 두 번째 for 반복문은 numbers 리스트의 각 요소에 대해 42로 나눈 나머지를 계산하여 remainders 리스트에 추가합니다.
  • unique_remainders = set(remainders): remainders 리스트의 중복을 제거하여 새로운 세트 unique_remainders를 생성합니다.
  • 마지막으로 print(len(unique_remainders))는 중복 없는 나머지의 개수를 출력합니다.
# 입력된 숫자들의 모듈로 42 연산 결과를 저장할 세트 생성
remainder_set = set()

# 10번 반복하여 숫자 입력받고 모듈로 연산 후 세트에 추가
for _ in range(10):
    number = int(input())
    remainder_set.add(number % 42)

# 중복 없이 나머지가 저장된 세트의 크기(서로 다른 나머지의 개수) 출력
print(len(remainder_set))

최적화된 코드 분석

  • remainder_set = set(): 나머지를 저장할 세트를 생성합니다. 세트는 중복을 자동으로 제거해줍니다.
  • for _ in range(10):: 사용자로부터 10개의 숫자를 입력받기 위한 반복문입니다.
  • number = int(input()): 사용자 입력을 정수로 변환합니다.
  • remainder_set.add(number % 42): 입력받은 숫자를 42로 나눈 나머지를 세트에 추가합니다. 중복된 값이 있더라도 세트는 자동으로 하나만 유지합니다.
  • print(len(remainder_set)): 세트의 크기, 즉 서로 다른 나머지의 개수를 출력합니다.

5. 추가개념

len() 함수는 파이썬의 내장 함수 중 하나로, 어떤 컨테이너(리스트, 튜플, 세트, 딕셔너리 등)에 들어 있는 요소의 개수를 반환합니다. len() 함수를 사용할 때 컨테이너 객체를 인자로 전달하면, 해당 객체가 포함하고 있는 요소의 총 수를 정수로 반환합니다.

 

# 세트 생성 및 요소 추가
my_set = {1, 2, 3, 4, 5}
# 세트의 길이(요소의 개수) 출력
print(len(my_set))  # 출력: 5