최대 1 분 소요

1. 문제Permalink

[Bronze II] 나머지 - 3052Permalink

문제 링크

성능 요약Permalink

메모리: 30864 KB, 시간: 76 ms

분류Permalink

사칙연산(arithmetic), 수학(math)

문제 설명Permalink

두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.

수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

입력Permalink

첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.

출력Permalink

첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.

출처: 백준, https://https://www.acmicpc.net/

2. 해결방법 시간복잡도Permalink

  1. 단순 코딩 O(N^2)
  2. 더 쉽게 O(N)

3. 문제 해결 및 코드Permalink


B = []
result = []
for i in range(10):
A = (int(input()) % 42)
B.append(A)
for i in B:
if i not in result:
result.append(i)
print(len(result))
view raw 3052.py hosted with ❤ by GitHub
  • 주석을 참고하면서 이해를 돕습니다.Permalink

4. 알고리즘 및 해설Permalink

  1. 이중 반복문을 통해 해당 값을 받은 즉시 42로 나눈 나머지를 구한다. 이후 B라는 리스트에 해당 값을 넣어준다.
  2. 넣은 값을 내부 반복문을 통해 결과 리스트에 값이 없다면 넣어준다.
  3. 최종적으로 결과값 리스트의 길이를 출력한다.

5. 더 쉽게Permalink

result = []
for i in range(10): result.append(int(input()) % 42)
print(len(list(set(result))))
  • set()을 통해 중복값을 제외한 뒤 결과값을 출력해준다.