티스토리 뷰
[Python] 백준 알고리즘 온라인 저지 10998번 : A×B
Python3 코드
1) 입력받은 문자를 각각 숫자로 변환하는 코드
A,B = input().split()
print(int(A)*int(B))
2) map 함수를 사용하는 코드
A,B = map(int,input().split())
print(A*B)
Python3 코드 풀이
1. 코드 풀이의 전체적인 내용 요약
백준 온라인 저지 단계별 문제에서 수학의 연산 문제를 계속해서 풀고 있는 중이다. 이번 문제는 랜덤으로 입력되는 두 수의 곱을 구해서 출력하는 문제이다. 컴퓨터가 아닌 일반적인 상황에서 곱하기 표시는 엑스 (x) 기호를 사용한다. 하지만 파이썬을 포함한 컴퓨터에서는 * 기호를 사용해야 곱하기를 풀 수 있다. 참고로 나누기는 슬래시 기호( / )를 사용해야 한다. 백준 단계별 문제를 푸는 분들은 이 곱하기와 나누기 기호를 안다면 이 문제를 쉽게 풀었을 거라고 생각한다. 앞 두 문제와 푸는 방식은 곱하기 기호를 *로 사용하는 것 말고는 코드가 완전히 똑같기 때문이다.
나의 경우 백준 알고리즘의 수학 연산 문제는 두 가지 방식으로 풀어보고 있다. 어차피 결괏값이 동일하기 때문에 굳이 두 번 풀진 않지만 처음엔 map 함수를 사용하는 게 익숙하지 않아서 두 번 풀어보곤 했었다. 두 개의 코드를 각각 설명해보겠다.
2. 첫 번째 코드
A,B = input().split()
print(int(A)*int(B))
input함수로 랜덤으로 정해지는 두 개의 수를 문자열로 입력받는다. 이때 문자는 한 개의 덩어리로 입력받는다. 예제 입력 2를 예로 든다면 '3 4'라는 하나의 문자로 입력받는다는 것이다. 이것이 input 함수의 특징이다. 사용자가 숫자로 입력하더라도 파이썬으로 받을 때는 문자열로 인식된다.
이 입력받은 문자열은 split 함수를 이용해서 나누어야 한다. 입력받는 문자의 공통점은 두 개의 수 사이에 공백이 있다는 것이다. 이 공통적으로 입력되는 가운데 공백을 기준으로 문자를 두 개로 나눌 수 있다. split( ) 함수에서 괄호( ) 안에 아무것도 입력하지 않으면 공백을 기준으로 문자를 나눌 수 있다. 다른 기호로 나누고 싶을 땐 sep= 파라미터에 원하는 기호를 문자형태로 지정하면 된다. 예를 들어 쉼표 기호(,)를 기준으로 문자를 나눈다면 split(sep=', ') 이런 식으로 표현해주면 된다. sep 파라미터에는 문자열로 값을 입력해야 하기 때문에 따옴표로 묶어주어야 한다.
input 받은 문자를 split 함수로 나누면 해당 수를 변수에 선언해준다. 이때, 두 개의 문자로 나뉘니까 튜플(tuple)의 성질을 이용해서 =기호 좌변에 두 개의 변수를 지정해주면 된다. 이렇게 튜플의 성질을 이용해서 여러 개의 변수를 지정할 때 좌변과 우변의 개수가 같아야 한다. 양변의 개수가 다르면 에러가 발생한다.
input 함수로 입력받은 문자는 int 함수를 이용해서 정수로 변환하고 * 기호를 사용해서 두 수를 곱해주면 된다.
3. 두 번째 코드
A,B = map(int,input().split())
print(A*B)
위 첫 번째 코드와 다른 점은 map 함수를 이용했고 int 변환을 map함수 안에서 한다는 것이다. map 함수가 데이터를 변환하는 기능을 할 수 있기 때문이다. 이렇게 두 번째 코드처럼 map 함수를 이용해서 데이터를 변환하는 경우 데이터의 요소 개수가 많은 경우에도 간단히 한 줄의 코드로 변환이 가능하다. 첫 번째 코드를 사용하는 경우에 변수의 개수가 많아지면 각각 int 함수를 사용하느라고 반복적인 int를 계속 써서 가독성을 해치는 건 물론이고 효율적이지도 못하다. 앞으로 계속 사용하게 될 함수이므로 제대로 이해를 하는 것이 좋다. 혹시라도 map 함수에 대해 더 궁금하실 분들을 위해 이전 포스팅에 남겨둔 글을 링크로 걸어둔다. ▶ map함수에 대해서
'파이썬 스킬업 > 백준 알고리즘 연습' 카테고리의 다른 글
백준 1008번 [파이썬 알고리즘] A/B (0) | 2020.07.01 |
---|---|
백준 1001번 [파이썬 알고리즘] A-B (0) | 2020.07.01 |
백준 1000번 [파이썬 알고리즘] A+B (0) | 2020.06.30 |