본문 바로가기
백준(BOJ)/파이썬

[백준][파이썬] 1001번: A-B (추가 예제/풀이/코드)

by cleancode 2022. 8. 18.

 

[백준][파이썬] 1001번: A-B

 

https://www.acmicpc.net/problem/1001

 

1001번: A-B

두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net


문제

두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오.


입력

첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)


출력

첫째 줄에 A-B를 출력한다.


예제 입력 1

3 2ㅤ

 

예제 출력 1

1

 

예제 입력 2

2 7

 

예제 출력 2

-5

 

예제 입력 3

4 4

 

예제 출력 3

0

풀이

1000번과 다른 점은 덧셈이 아닌 뺄셈 연산을 수행한다는 것이다.

1000번 문제와 마찬가지로 map 함수를 이용해 입력받은 값을 형 변환해 변수에 저장하면 깔끔한 풀이가 가능하다.


Python3 정답 코드

a, b = map(int, input().split())
print(a - b)

추가 정답 코드 1

print(eval('-'.join(input().split()))

eval 함수와 join 함수를 활용한 코드

(eval 함수는 보안 취약점이 존재하여 자주 쓰이지 않는 편이다.)


추가 정답 코드 2

print(eval(input().replace(' ','-')))

추가 정답 코드 1번과 유사하지만, 공백을 기준으로 문자열을 나누고(split) 문자열 사이에 -를 넣어 이어 붙이는(join) 과정을 띄어쓰기를 -로 치환하는 replace 함수로 대체한 코드


추가 정답 코드 3

print(eval('+0-'.join(input())))

eval과 join을 활용한 다른 코드

 

이 코드에서 eval 함수가 실제로 계산하는 문자열은 '3+0- +0-2'의 형태이다.

만일 '+0-' 대신 '-'를 사용한다면 '3- -2'가 계산되어 두 수의 차가 아닌 합이 출력될 것이다.

1000번 문제의 추가 정답 코드 2와 마찬가지로, 이 문제에서처럼 입력받는 두 정수가 모두 한 자릿수로 범위가 정해져 있는 경우에만 사용할 수 있는 코드이다. 만일 범위에서 벗어난 입력이 주어진다면(예: 156 93) 그냥 추가 정답 코드 1번을 사용하면 된다.

 

댓글