🧪 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 |