Algorithm/Beakjoon

[알고리즘] 백준 알고리즘 1000번 : A+B(Python풀이)

earlykim 2019. 10. 18. 14:13

 

 

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

 

 

1000번: A+B

문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 첫째 줄에 A+B를 출력한다. 예제 입력 1 복사 1 2 예제 출력 1 복사 3 힌트 여기를 누르면 1000번 예제 소스를 볼 수 있습니다....

www.acmicpc.net

 

- 문제

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

 

- 입력

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

 

- 출력

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

 

- 예제

- 풀이

본 풀이에서는 Python 언어를 사용하였습니다.

Python에서는 기본적으로 입력을 받는 함수로 input() 함수를 사용합니다.

하지만 알고리즘 풀이와 같은 문제에서는 문제를 해결하는 데에 걸리는 시간도 중요한 요소로 작용합니다.

즉, 내가 작성한 코드가 문제풀이에 얼마만큼의 시간을 소요했느냐가 정답과 오답을 가르기도 합니다.

하지만 본 문제와 같은 기본적인 문제에서는 시간이라는 요소가 크게 작용하지는 않으니 기본적인 함수 사용으로도 충분히 문제를 해결할 수 있습니다.

 

그렇다면 Python에서 예제와 같이 띄어쓰기로 입력을 받으려면 어떻게 해야 할까요??

여러가지 방법이 있을 수 있겠지만 아래와 같은 방법을 사용해보도록 하겠습니다.

a,b=input().split()

 

Python은 C나 C++과 달리 변수 두 개를 또는 그 이상을 한 번에 다른 값으로 초기화 할 수 있습니다. (같은 자료형)

split()함수는 괄호 안의 문자를 만나면 잘라서 저장하라는 의미 정도로 알고계시면 좋을 것 같네요.

현재는 괄호 안에 아무 문자도 없으니 띄어쓰기를 기준으로 문자를 자른다 라고 생각하시면 되겠습니다.

그렇다면 이제 a와 b를 더할 일만 남았겠군요.

a,b=input().split()
print(a+b)

하지만 이렇게 실행을 하게되면 쌩뚱맞은 답인 12가 나오게 됩니다.(???)

 

위와 같은 코드로 a와 b를 저장하게 되면 기본적으로 문자열 형태(str)로 저장이 됩니다.

그렇기 때문에 문자열 "1"과 문자열 "2"가 더해져서 문자열 "12"가 된 것이죠.

우리가 하고자 하는 풀이는 정수 a와 b의 합이기 때문에 문자열을 다시 정수로 변환하는 과정이 필요합니다.

a=int(a)
b=int(b)

이러한 과정을 "형변환" 이라고 합니다.

위의 코드는 "변수 a를 int라는 형태로 바꾸어 다시 변수 a에 저장하라" 라는 정도의 코드가 되겠습니다.

(Python의 변수 저장 형태는 추후에 다시 설명하는 시간을 갖겠습니다.)

이 과정을 거치게 되면 a와 b는 정수형태인 int형으로 바뀌게 됩니다.

형 변환이 끝났으니 이제 print()함수를 사용하여 a+b를 출력해보도록 하겠습니다.

a,b=input().split()
a=int(a)
b=int(b)
print(a+b)

 

이제 코드를 약간 간결하게 만들어 보도록 하겠습니다.

Python에서는 map()이라는 함수를 사용할 수 있습니다.

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

기본적으로 "map 함수는 리스트의 요소에 함수를 적용시켜 결과를 반환한다" 라는 정의를 가지고 있는데

어려운 개념입니다.

위의 코드를 가지고 설명을 한다면 "input함수를 가지고 입력받은 문자열(str)을 띄어쓰기를 기준으로 띄워서 a와 b에 저장을 할건데, 그걸 정수형(int)으로 저장할게!" 정도의 의미를 가지고 계시면 될 것 같습니다.

어쨋든, 앞의 4줄 코드보다 훨씬 간략한 코드가 되었죠??

위의 코드들 말고도 정말 다양한 코드들이 나올 수 있습니다.

하지만 그 코드들은 모두 정답인 코드들이며 처음 시작하는 단계에서는 하나하나 어떻게든 풀어 나가는 것이 중요하다고 생각합니다.

 

시간까지 절약할 수 있는 코드를 마지막으로 이번 포스팅을 마무리 하도록 하겠습니다!!

(코드에 대한 설명은 다음 기회에 하도록 하겠습니다.)

import sys
a,b=map(int,sys.stdin.readline().split())
print(a+b)