ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [BAEKJOON] 3052 나머지
    알고리즘 2023. 11. 3. 11:54
    반응형

    문제

    두 자연수 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개가 있다.


    해당 문제는 나머지 연산자를 사용할 수 있는지와 리스트 혹은 딕셔너리를 사용 할 수있는지 문제였다.

     

    물론 나는 코드를 길게 작성하기 싫기에 어쩌피 문제가 요구하는 것은 나머지들이 몇개가 있는지를 요구한 것이다.

    서로 다른 나머지 값들을 카운트하는 문제이기에 나는 딕셔너리를 이용하여 중복을 제거하였다.

    물론 list로 받고 set을 이용하여 중복을 제거해도 될듯 싶다.

     

    import sys

    na = {}

    for _ in range(10):
        n = int(sys.stdin.readline().strip())
        na[n%42] = 0

    print(len(na))

    딕셔너리 사용한 코드

     

    import sys

    na = []

    for _ in range(10):
        n = int(sys.stdin.readline().strip())
        na.append(n%42)

    print(len(set(na)))

    set을 사용한 코드

    반응형

    '알고리즘' 카테고리의 다른 글

    [BAEKJOON] 1546 평균  (0) 2023.11.03
    [BAEKJOON] 10811 바구니 뒤집기  (2) 2023.11.03
    [BAEKJOON] 5597 과제 안 내신 분..?  (0) 2023.11.03
    [BAEKJOON] 10813 공 바꾸기  (0) 2023.11.03
    [BAEKJOON] 10810 공 넣기  (0) 2023.11.03
Designed by Tistory.