나머지

이 문제는 단순하게 문제에 나와있는 계산식을 코드로 표현하여 올바른 출력값을 나타내면 된다.
입력 조건은 %를 0으로 나누게 되면 zero divison error가 발생하기 때문에 2보다 큰 조건을 가지게 되는 것을 알 수 있다.
한번 0으로 나누게 되면 error가 실제로 발생하는지 직접 해보겠습니다.

ZeroDivisionError가 발생합니다. 0은 수학적으로 나눌 수 없기 때문입니다.
하지만 백준에서 직접 예외처리 즉 입력 조건에 해당하는 입력값을 입력하기 때문에, 굳이 예외처리를 안해도 됩니다.
따라서 단순하게 저 식을 코딩하면 다음과 같습니다.
A,B,C = map(int,input().split())
print((A+B)%C)
print(((A%C) + (B%C))%C)
print((A*B)%C)
print(((A%C) * (B%C))%C)
하지만 교환법칙과 분배법칙이 있기 때문에 굳이 저 복잡한 식을 사용하지 않고
A,B,C = map(int,input().split())
print((A+B)%C)
print((A+B)%C)
print((A*B)%C)
print((A*B)%C)
이와 같이 코딩해도 됩니다. 그 이유는 그 두식이 결국 같은 값을 반환하고 같은 식이라고 해도 무방하기 때문입니다.

다음으로는 정답 비율을 보고 분석 후 오답 코드를 같이 보겠습니다.

정답 비율은 약 51%로 높은 편에 속하지는 않습니다. 아마 다른 사람들의 코드가 보통 ( )를 제대로 처리 하지 않거나 입력값을 3개 받는 부분에서 틀렸을 것이라고 예상합니다.

다른 사람의 오답 처리 된 코드입니다.
먼저 \n을 통해서 print() 한번에 처리하는 것은 좋은 아이디어라고 생각합니다. 하지만 역시 사칙연산 순서를 보존하지 않았기 떄문에 기대한 값과 다른 값들이 출력되어 결국 오답된 코드로 처리 되었습니다.
수학 처럼 파이썬에서도 연산자 우선순위가 있습니다. ( )를 제대로 해줘야 저희가 원하는 결과를 얻을 수 있습니다.
() , [] 는 나중에 딥러닝에서도 차원을 다루는데 있어 매우 헷갈리며 올바르게 처리해줘야 합니다. 계속 [] 의 개수가 맞지 않아 올바르지 않은 결과가 나올 수 있으니 지금 부터라도 괄호, 대괄호 처리하는데 있어 신중하게 처리해야 합니다.
우선순위에 대해 명확히 알아야 앞으로의 코딩 하실 때 기대값을 얻을 수 있을 것 입니다.
다음 게시글에서는 연산자 운선순위에 대해서 간략하게 소개하겠습니다.
'BaekJoon Reivew' 카테고리의 다른 글
단계별로 풀어보기 백준_2588번 (0) | 2025.02.03 |
---|---|
단계별로 풀어보기 백준_10430번 | 연산자 운선수위 | (0) | 2025.02.02 |
단계별로 풀어보기 백준_18108 (0) | 2025.02.02 |
단계별로 풀어보기 백준_10926번 (1) | 2025.02.01 |
단계별로 풀어보기 백준_10869번 (0) | 2025.02.01 |