기초부터 시작하는 백준 풀이!

🧩 백준 10430 나머지

hamzgi 2025. 10. 22. 14:26

🧪 Python 입출력 연습: 나머지 계산 문제

문제

(A+B)%C는 ((A%C) + (B%C))%C 와 같을까?

(A×B)%C는 ((A%C) × (B%C))%C 와 같을까?

세 수 A, B, C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000)

출력

첫째 줄에 (A+B)%C, 둘째 줄에 ((A%C) + (B%C))%C, 셋째 줄에 (A×B)%C, 넷째 줄에 ((A%C) × (B%C))%C를 출력한다.

 

예제 입력 1 

5 8 4

예제 출력 1 

1
1
0
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 )

결과: 정답

문제 자체는 정답이 주어진 형태라서 비교적 쉽게 풀 수 있었다.
하지만 단순히 푸는 데서 그치지 않고, 입력 방식을 조금 더 효율적으로 만들어 보기 위해
map()과 split()을 함께 사용해보았다.


💡 다른 입력 방식들

문제를 풀고 나서, “다른 방법으로는 어떻게 입력을 받을 수 있을까?
라는 생각이 들어 여러 예제를 정리해보았다.


1️⃣ List Comprehension (같은 동작, 다른 표현)

 
A, B, C = [int(x) for x in input().split()]

map()과 기능적으로 같지만, 리스트 형태로 변환이 명확히 보이므로
가독성을 선호하는 경우 유용하다.


2️⃣ Split 후 인덱스로 접근 (명시적 방법)

 
s = input().split()
A = int(s[0]); B = int(s[1]); C = int(s[2])

입력을 명시적으로 제어하고 싶을 때 쓰기 좋다.
특히 초보자에게는 코드 흐름이 직관적으로 보인다.


3️⃣ sys.stdin.readline() 사용 (백준용 고속 입력)

 
import sys
A, B, C = map(int, sys.stdin.readline().split())

input()보다 약간 더 빠르다.
반복문에서 많은 입력을 받을 때 백준, 프로그래머스 등에서 주로 사용된다.


4️⃣ 입력 검증이 필요한 경우

 
tokens = input().split()
if len(tokens) != 3:
    raise ValueError("세 개의 값이 필요합니다")
A, B, C = [int(x) for x in tokens]

예상치 못한 입력에 대비해야 할 때 유용하다.
실무나 안정성을 요구하는 상황에서 자주 사용되는 방식이다.


⚙️ 정리

  • 간결함과 성능이 중요할 때 → map()
  • 가독성이 중요할 때 → 리스트 컴프리헨션
  • 대량 입력일 때 → sys.stdin.readline()
  • 입력 검증이 필요할 때 → 조건문 처리

✨ 이번 문제를 통해 배운 점

같은 정답이라도, 코드를 구성하는 방법은 다양하다.
단순히 ‘맞았다’에서 끝내지 말고,
“다른 접근법은 없을까?”라는 연구적인 습관을 가지는 게 중요하다.


📚 오늘의 교훈:

“문제를 푼 이후가 진짜 공부의 시작이다.”

'기초부터 시작하는 백준 풀이!' 카테고리의 다른 글

🧩 백준 2739번 - 구구단  (0) 2025.10.15
🧩 백준 10926번 - ??!  (0) 2025.10.14
무엇을 하는 곳인고?  (0) 2025.10.14