[백준 10869번-파이썬/Python] 사칙연산
알고리즘 공부/BOJ백준 풀이

[백준 10869번-파이썬/Python] 사칙연산

http://acmicpc.net/problem/10869

{코드}

a, b = map(int, input().split())
print(a+b)
print(a-b)
print(a*b)
print(a//b)
print(a%b)

{설명}

이 문제는 지난 4개의 글을 한문제로 합친 것과 같습니다.

결국 map함수를 통해 정수 두개를 입력받고 문제가 요구하는 각 연산을 실행하면 되는 문제입니다..

이때, /, 즉 나눗셈은 목 연산이므로 //를 써야하고 나머지 연산을 위해 %를 사용하면 각 연산당 한줄씩 출력하면 됩니다.

{코드}

numbers = input().split()
operators = ['+', '-', '*', '//', '%']
for operator in operators:
	print(eval(operator.join(numbers)))

{설명}

이걸 파이토닉(Pythonic-파이썬스럽게 만드는 것)하게 만들자면, 파이썬에는 기본적으로 eval이라는 함수가 주어집니다.

eval은 연산식을 인자로 넘겨주며 해당 식의 결과를 반환합니다. (예: eval('5==4')는 False, eval('5*3')는 15를 반환)

eval은 내장되어있는 함수이지만 알고리즘 풀이에서는 되도록 사용하지 않는 편이 좋습니다.

그리고 join은 해당 함수를 부른 문자열을 join의 파라미터의 각 인덱스 사이에 삽입한 결과를 문자열로 반환한다.

join의 예시: 'a'.join('bbb') = 'babab'이며 'a'.join(['b', 'c', 'd']) = 'bacada'

이때 리스트/튜플/집합의 각 원소는 모두 문자열이어야하며 딕셔너리의 경우 키값으로 실행합니다.

결국 numbers에 각 숫자를 담은 리스트를 저장하고, 각 연산자별로 join함수에 numbers를 넣어 불러서 출력을 하면 된다.