멋쟁이v의 개발일지

[백준 3052번] 나머지(파이썬) 본문

0년차/알고리즘(1차원 배열)

[백준 3052번] 나머지(파이썬)

멋쟁이v 2022. 11. 27. 21:15
728x90
320x100
문제
두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

 

입력
첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.
출력
첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.

 

예제 입력 1
1
2
3
4
5
6
7
8
9
10

각 수를 42로 나눈 나머지는 1, 2, 3, 4, 5, 6, 7, 8, 9, 10이다.
예제 출력 1
10

 

풀이
이 문제는 주어진 10개의 수를 42로 나눈 나머지의 서로 다른 값이 몇 개 있는지를 구해야 합니다.

예제 1에 주어진 수는 1, 2, 3, 4, 5, 6, 7, 8, 9, 10이고,
각 수를 42로 나눈 나머지는 1, 2, 3, 4, 5, 6, 7, 8, 9, 10입니다.
정답은 개수를 세어보면 10이 되겠네요.

코드를 순서대로 작성한다면
1. 10개의 수를 리스트로 입력
2. 입력 받은 수를 하나씩 42로 나누어 변수에 저장
3. 변수 저장과 동시에 또다른 리스트에 저장
4. 중복 제거를 위해 리스트 형식의 세트형으로 변환
5. 리스트 안에 값이 몇 개 있는지 출력


작성 코드
A = [int(input()) for _ in range(10)] # 10개의 수를 입력
B = [] # 또다른 리스트 선언

for i in A: # 입력 받은 10개 수를 하나씩 꺼냄
    x = i % 42 # 42로 나눈 나머지를 저장
    B.append(x) # 또다른 리스트에 저장
    
answer = list(set(B)) # 리스트형식의 세트형(중복제거, 정렬)

print(len(answer)) # 리스트의 개수(길이)를 출력
728x90
320x100
Comments