프로그래머스 파이썬 기초 트레이닝 :: eval, join, map 함수 문제 모음
문제들
Day-15 (4) 길이에 따른 연산map 함수
map(function, iterable, ...)
리턴값 : map 객체 (iterator)
function 대로 iterable을 실행시킴.
eval 함수
eval(expression, globals=None, locals=None)
리턴값 : expression 실행 값
문자열로 받은 표현식을 실행시키는 역할
------------------------------------------------
Day-15 (4) 길이에 따른 연산
문제 설명정수가 담긴 리스트 num_list가 주어질 때, 리스트의 길이가 11 이상이면 리스트에 있는 모든 원소의 합을 10 이하이면 모든 원소의 곱을 return하도록 solution 함수를 완성해주세요.
일반 코드
내가 처음에 푼 방식
def solution(num_list):
mul = 1
if len(num_list) >= 11 :
return sum(num_list)
else :
for i in num_list :
mul *= i
return mul
eval, join, map 함수
리스트 값을 문자열로 변환(map)하고, 합쳐서(join), 조건에 맞춰 수식계산(eval)
def solution(num_list):
if len(num_list) >= 11 :
return eval('+'.join(map(str, num_list)))
else :
return eval('*'.join(map(str, num_list)))
일반 코드로도 실행이 되지만 eval, join, map 코드에 익숙해져서 유용하게 사용할려고 문제들을 정리해본다.
------------------------------------------------
Day-21 (4) 문자열 정수의 합
문제 설명한 자리 정수로 이루어진 문자열 num_str이 주어질 때, 각 자리수의 합을 return하도록 solution 함수를 완성해주세요.
일반 코드
def solution(num_str):
sum = 0
for i in num_str :
sum += int(i)
return sum
sum 함수
리스트 컴프리헨션 + sum 함수 사용
def solution(num_str):
return sum(int(i) for i in num_str)
sum, map 함수
리스트 컴프리헨션로 int형변환 하는걸 대신하는 map() 사용
def solution(num_str):
return sum(map(int, num_str))
lambda
리스트 컴프리헨션으로 int 형변환 + sum()
solution = lambda num_str : sum(int(i) for i in num_str)
map() 사용
solution = lambda num_str : sum(map(int, num_str))
------------------------------------------------
Day-22 (2) 두 수의 합
문제 설명
0 이상의 두 정수가 문자열 a, b로 주어질 때, a + b의 값을 문자열로 return 하는 solution 함수를 작성해 주세요.
a b result
"582" "734" "1316"
"0" "0" "0"
일반 코드
내가 처음에 푼 방식
def solution(a, b):
return str(int(a) + int(b))
eval 함수
eval 함수안에 표현식을 만들어서 실행 가능
def solution(a, b):
return str(eval(a + "+" + b))
eval, f string
eval 함수안에 표현식을 f string으로 만드는 것도 가능
def solution(a, b):
return str(eval(f'{a}+{b}'))
참고 : f string (D-22 (3) 문자열로 변환)
문자열로 형변환을 할때, str() 형변환도 가능하지만, f string 활용도 가능
def solution(n):
return str(n)
f string을 바로 return 값으로 줄 수도 있다.
def solution(n):
return f'{n}'
map 함수
map함수를 이렇게 활용도 가능하다. int로 바꾼 map 객체를 바로 sum으로 넣기
solution=lambda x,y:str(sum(map(int,[x,y])))
댓글
댓글 쓰기