본문 바로가기

백준/언랭 탈출하기

[백준 10869번/Python] 사칙연산

문제

두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. 

 

틀린 코드1

A=int(input())
B=int(input())
C=0

C=A+B
print(C)

C=A-B
print(C)

C=A*B
print(C)

C=A/B
print(C)

C=A%B
print(C)

틀린 이유 : 해당 코드는 숫자 두개를 각각 다른 줄에서 입력 받기에, 입력 형식이 만약

5 3

이런식으로 주어진다면 해당 코드에서 입력받을 수 없다.

A, B = map(int, input().split())

사용자로부터 입력받은 두 숫자를 공백으로 분리하고, 각각을 정수로 변환하여 변수 A와 B에 할당하는 작업을 수행

1. input() : 사용자로부터 입력을 받는 함수

- 입력된 값은 문자열(string) 형태로 반환

 

2. .split() : 문자열 메서드

- 문자열을 공백 기준으로 분리하여 리스트를 반환합니다.

예) "10 20".split()->['10','20']

 

3. map(int, ...)

- map 함수 : 첫번째 인자로 주어진 함수를 두번째 인자로 주어진 iterable(예: 리스트, 튜플 등)의 각 요소에 적용

- 이 경우에는 각 문자열 요소를 'int' 함수를 이용하여 정수로 변환

예) map(int, ['10', '20']-> map객체가 반환, 이를 list로 변환하면 [10, 20]이 됨

 

4. A, B = ....

- Python의 tuple unpacking 기능을 사용하여 리스트의 각 요소를 여러 변수에 할당

예) A, B = [10, 20] -> A는 10, B는 20

 

 

틀린 코드2

A, B = map(int, input().split())
print(A+B)
print(A-B)
print(A*B)
print(A/B)
print(A%B)

틀린 이유 : 나누기 연산시 실수형(float)로 출력될 경우를 고려하지 않았음 

 

정답 코드 

A, B = map(int, input().split())
print(A+B)
print(A-B)
print(A*B)
print(int(A/B))
print(int(A%B))