우당탕탕 파이썬 with 하루하나 알고리즘

백준 1001 파이썬 - 뺄셈 (input 정수, 문자열 나누기)

hyxndy 2022. 3. 10. 16:24

백준 1001번 - A-B

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

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

<답>

이거는 좀 어려워서 구글링을 통해 문제를 해결하였다.

먼저 이 문제에서는 A와 B의 값을 따로 주어지지 않은 상태에서 식을 만들어야한다.

그러므로 A와 B를 인수로 입력을 받게 해야한다.

이를 사용하기 위해 input()함수를 사용할 수 있다.

input()은 입력함수이다.

파이썬 Environment에 있는 것을 출력할 때는 print()함수를 사용하는데, 이와 반대되는 함수라고 볼 수 있다.

즉, 우리가 입력함수를 이용해 입력을 함으로써 파이썬 환경에 문자열로 저장이 되는 것이다.

그래서 A와 B를 input()함수를 통해 문자를 넣을 수 있다.

하지만 여기서 문제가 있다.

A와 B가 따로따로 주어진다면 저 함수를 통해 바로 해결할 수 있지만,

이 문제에서는 아래의 예제 입력란과 같이 A와 B의 값이 한 줄로 적혀져 있다.

이 문제를 해결하려면 어떻게 해야 할까?

이때는 split()함수를 이용하면 된다.

split()함수는 괄호 속에 들어간 문자를 구분자로 하여 문자열을 분리하여 리스트로 반환해주는 함수이다.

여기서 구분자를 따로 지정해주지 않으면(즉, 괄호속이 공란이면)공백이 구분자가 된다.

간단하게 예시를 들어보겠다.

문자열 "Hello. Nice to meet you."이 있다. 여기서 구분자를 공백으로 지정해줘서 단어 별로 나누어주려고 한다.

이때 split()함수를 이용한다.

이렇게 문자열 뒤에 split()함수를 붙여넣으면 단어별로 나뉘어져 리스트가 만들어진다.

이번엔 문장별로 나누어보겠다. 문장으로 나누기 위해서는 구분자가 .이어야한다

실행을 해보면 .은 구분자가 되어 문자열에서 사라지고, 문장별로 잘 나눠짐을 볼 수 있다.

그럼 다시 본론으로 돌아가서 A와 B를 나누어주겠다.

예제에서는 두 숫자가 공백으로 구분되어있기 때문에 공백을 구분자기호로 사용할 것이다.

input()함수를 통해 넣어준 값을 구분해줘야함으로 input함수 뒤에 split함수를 붙여주었다.

코딩을 하고 3 2를 입력해주면

이렇게 잘 나온 것을 확인할 수 있다.

이제 두 값을 뺄셈을 통해 계산만 해주면 된다.

이는 간단하다 print(A-B)를 해주면 된다.

하지만 계산을 해주면 이렇게 오류가 발생한다.

어떤 부분에서 오류가 발생했는지 보면 type에 대한 error가 발생했다고 뜬다.

input()함수는 문자열(string)로 저장을 해주는 값이다. 즉 우리는 3과 2라는 숫자를 집어넣었음에도

컴퓨터에는 문자로 저장이 된다. 그렇기 때문에 우리가 입력한 3과 2가 숫자임을 컴퓨터에게 알려야 한다.

문제에서는 두 정수 A와 B를 입력받으라 했기 때문에 정수임을 알려주어야 한다.

정수를 나타내는 함수는 int이다.

그래서 x에 정수 A를 입력하고, y에 정수 B를 입력하여 두 값을 빼어주면 값이 잘 나오는 것을 확인할 수 있다.