[백준/python] 3052번
나머지
문제
두 자연수 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
예제 출력 1 복사
10
각 수를 42로 나눈 나머지는 1, 2, 3, 4, 5, 6, 7, 8, 9, 10이다.
예제 입력 2 복사
42
84
252
420
840
126
42
84
420
126
예제 출력 2 복사
1
모든 수를 42로 나눈 나머지는 0이다.
예제 입력 3 복사
39
40
41
42
43
44
82
83
84
85
예제 출력 3 복사
6
각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.
풀이
방법)
빈배열 생성
반복문으로 10개의 수를 입력받기
입력받은 값을 42로 나누기
배열에 나머지 값을 추가(중복 제외)
배열 길이 출력
-> 배열에 중복된 값이 제외되었으므로 서로 다른 나머지가 몇 개인지 알 수 있음
1) not in 사용
입력받은 값을 42로 나눈 나머지가 binnom이라는 배열에 들어있지 않다면 추가하여 binnom의 길이를 출력
# 빈 리스트 binnom을 생성합니다.
binnom = []
# for 루프를 사용하여 10번 반복합니다.
for i in range(10):
# 각 반복에서 사용자로부터 정수를 입력받습니다.
a = int(input())
# 입력받은 정수를 42로 나눈 나머지를 구하여 변수 b에 저장합니다.
b = a % 42
# 만약 b가 리스트 binnom에 이미 존재하지 않는다면 (if b not in binnom:), 즉 중복된 값이 아니라면 해당 나머지 값을 리스트 bin에 추가합니다.
if b not in binnom:
binnom.append(b)
# 10번의 반복이 끝나면 리스트 bin에는 10개의 정수에 대한 42로 나눈 나머지 중에서 중복을 제외한 유일한 값들이 저장됩니다.
# 리스트의 길이를 출력하여 유일한 값들의 개수를 확인합니다.
print(len(binnom))
2) set 사용 : set은 중복× 순서×, list에 값을 추가할 땐 append, set에 값을 추가할 땐 add
입력받은 값을 42로 나눈 나머지를 배열에 추가하고, 그 값을 set이라는 배열에다가 담아 중복을 없앤 값의 길이를 출력
2-1) 처음엔 list에 담았다가 set으로 담아서 중복을 제거하는 경우
# 빈 리스트 binnom을 생성합니다.
binnom = []
# for 루프를 사용하여 10번 반복합니다.
for i in range(10):
# 각 반복에서 사용자로부터 정수를 입력받습니다.
a = int(input())
# 입력받은 정수를 42로 나눈 나머지를 구하고
b = a % 42
# 그 값을 리스트 bin에 추가합니다.
binnom.append(b)
# 10번의 반복이 끝나면 리스트 bin에는 10개의 정수에 대한 42로 나눈 나머지가 저장됩니다.
# 리스트를 집합(set)으로 변환하여 중복을 제거한 후, 그 집합의 크기를 출력합니다.
print(len(set(binnom)))
2-2) 처음부터 set에 담는 경우
# 빈 집합 binnom을 생성합니다.
binnom = set()
# for 루프를 사용하여 10번 반복합니다.
for i in range(10):
# 각 반복에서 사용자로부터 정수를 입력받습니다.
a = int(input())
# 입력받은 정수를 42로 나눈 나머지를 구합니다.
b = a % 42
# 나머지 값을 집합 binnom에 추가합니다. 집합은 중복을 허용하지 않기 때문에 중복된 값은 자동으로 제거됩니다.
binnom.add(b)
# 10번의 반복이 끝나면 binnom에 남아 있는 유일한 값들의 개수를 출력합니다.
print(len(binnom))
* List, Set, Dictionary, Tuple의 차이점
List | Set | Dictionary | Tuple |
|
|
|
|
my_list = [1, 2, 3, 4]
my_set = {1, 2, 3, 4}
my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}
my_tuple = (1, 2, 3, 4)