프로그래머스 파이썬 기초 트레이닝 :: 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])))



    댓글

    이 블로그의 인기 게시물

    [KT 에이블스쿨 - IT 트랜드] 국내외 AI 관련 규제

    KT 에이블스쿨 : 핀테크 아이디어 공모전

    KT 에이블스쿨 : 6-7차 미니프로젝트 - 제안서 기반 솔류션 기획 및 설계