[ 백준 문제 1000 / 파이썬 ] 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

2023. 2. 5. 11:11백준/파이썬

 

1000번: A+B

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

www.acmicpc.net

 

두 정수 A와 B를 한 줄 안에서 사용자로부터 입력받아야 합니다.


 

입력받는다?

input()

바로 떠오릅니다.

 

 

이런 식으로 한 칸 뛰어서 입력 받아야 한다고 예제에 나와있는데,

 


이 말인즉슨 입력값을 분할해서 받아야 한다는 거고

split()

써줍니다.

 

A, B = input().split()
print(A+B)
1 2
12

A+B를 했을 때 12가 나오는데, 이 말인즉슨

A와 B를 정수가 아니라 문자열로 보기 때문입니다.

 

이처럼 split()은 기본적으로 문자열을 분할해주는 함수 입니다.

split() 쓰기 위해서는 int형 변환을 해줘야 할 것 같습니다.

 

A, B = int(input().split())
print(A+B)
1 2
TypeError: int() argument must be a string, a bytes-like object or a real number, not 'list'

타입 에러가 발생합니다. 

int로 형 변환 할 input().split()이 string이 아니라 list이기 때문입니다.

 

print(input().split())
1 2
['1', '2']

이처럼 split() 메서드는 문자열을 구분자 단위로 분할하여 리스트를 생성하는 함수입니다.

 

A, B = input().split()
A = int(A)
B = int(B)
print(A+B)
1 2
3

이렇게 일일이 리스트 안에 들어간 변수들마다 int 형 변환을 해준다면 

원하는 값이 출력됩니다.

 

그렇지만, 비효율적이고 번거롭죠.

더 좋은 방법이 있을 것 같은데요.


map()

map()을 통해서 여러개의 값을 입력받을 수 있습니다.

map()은 리스트의 각각의 요소마다 지정한 함수로 처리해주는 함수입니다.

 

위처럼

사용자로부터 입력을 받을 때, 입력을 받아야 할 변수가 많고, 변수마다 타입을 변환해야 하는

번거로운 상황이 있을 때 map() 이 유용하게 쓰입니다.

 

3.

A, B = map(int, input().split())
print(A+B)
1 2
3

이처럼 사용해줍니다.

 

input().split()으로 ['1', '2']라는 리스트가 출력되는 것을 위에서 확인했습니다.

map()은 이 리스트의 요소들을 각각  int 형 변환해주는 역할을 합니다.

 

  • split(" ")과 split() 사용 비교
더보기

문제는 공백이 하나인 입력값이니까 => split(" ") 이렇게 써도 되고,

A, B = map(int, input().split(" "))
print(A+B)
  • 공백 하나인 입력값을 받을 때 -> 잘 작동
1 2
3
  • 공백이 여러개인 값을 입력받을 때 -> 에러

 

공백 자체를 단위로 해서 분할하고 싶은 거면 => split() 그대로 써줍니다.

A, B = map(int, input().split())
print(A+B)
  • 공백이 여러개인 값을 입력받을 때 -> 잘 작동
1                                       2
3

 

정답:

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

 

단계적으로

 

1.

input() 입력받겠다!

 

2.

split() 입력값을 분할해서 리스트로 출력하겠다!

 

3.

input().split() 을 통해 문자열 원소들을 가진 리스트가 출력된다!

 

4.

그러나 나는 지금 A, B를 정수로 입력받아 A+B 계산을 하고싶다.

int형 변환을 해줘야겠다!

int(input().split())을 해준다!

=>에러가 난다!

 

왜? int형으로 직접적으로 변환 해줄 때는 list를 못 받아서..

 

5.

list 속에 문자열로 된 원소들을 각각 int형으로 변환해주고 싶다!!!!!

map() 이용해줄 거다.

 

map(int, input().split())

성공!