Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total



GitHub Contribution
Loading data ...
관리 메뉴

초보 개발자의 일기

3052번 - 나머지 본문

열공일기/코딩연습

3052번 - 나머지

Da다 2021. 5. 9. 14:38
 

3052번: 나머지

각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.

www.acmicpc.net

문제

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

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

입력

첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다.

이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.

출력

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

나의 제출 - Python

이 문제는 리스트(List) 컴프리헨션과 집합(Set) 컴프리헨션을 이용하면 된다.

 

리스트 컴프리헨션(List comprehension)?

여러개의 변수를 생성할 때 map 함수를 사용하듯이, 간단하고 쉽게 리스트를 생성할 수 있는 방법이다.

컴프리헨션에는 리스트(List), 딕셔너리(Dictionary), 집합(Set) 컴프리헨션이 있다. 쉽고 간단하게 사용할수도 있고, 굉장히 복잡한 연산도 가능하다고 한다.

아래 링크를 참고하면 컴프리헨션 내의 중복표현, 조건문 등의 사용방법을 자세히 알 수 있다.

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

제출 코드

제출한 코드는 4줄로 되어있다. 집합은 중복값을 허용하지 않기 때문에 필터링용으로 사용했다. 

K = [int(input()) for i in range(0,10)]    # K에 입력받은 숫자 저장
K2 = [K[j]%42 for j in range(len(K))]      # K2에 나머지 저장
K3 = list(set(K2))    # set(집합)을 이용하여 중복값 제거
print(len(K3))        # len(K3) : 요소 개수 출력

수정한 코드

수정한 코드는 2줄로 되어있다. 리스트 컴프리헨션과 집합 컴프리헨션을 사용하여 작성했다.

리스트는 대괄호[]로 표시하고, 집합은 중괄호{}로 표시한다. 또한 집합 컴프리헨션으로 생성된 객체도 집합의 특성을 지니고 있기 때문에 중복값을 허용하지 않는다. 따라서 중복값은 제외하여 저장하게 되고, len으로 요소의 개수를 출력해주었다.

K = [int(input()) for i in range(0,10)]        # List comprehension
print(len({K[j]%42 for j in range(len(K))}))   # Set comprehension

'열공일기 > 코딩연습' 카테고리의 다른 글

4673번 - 셀프 넘버  (0) 2021.05.14
8958번 - O,X 퀴즈  (0) 2021.05.11
1110번 - 더하기 사이클  (0) 2021.05.08
10871번 - X보다 작은 수  (0) 2021.05.07
11021번 - A+B - 7  (0) 2021.05.06
Comments