[프로그래머스 / Python] OX퀴즈

Kun-Woo Kim·2024년 12월 30일

알고리즘 공부

목록 보기
12/24
post-thumbnail

문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/120907


문제

덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.


내 답안

def solution(quiz):
    return ["O" if eval(i.split("=")[0]) == int(i.split("=")[1]) else "X" for i in quiz]

남의 풀이

def solution(quiz):
    answer = []
    for q in quiz:
        p, a = q.split("=")
        if eval(p) == int(a):
            answer.append("O")
        else:
            answer.append("X")
    return answer

결론 및 느낀점

문자열로 표현된 수식을 처리할 때마다 eval() 함수를 사용하게 되는데, 이 방법이 너무 편해서 자주 사용하게 된다. eval()은 문자열을 코드로 실행시키기 때문에 보안 상의 위험이 있고, 실무에서는 사용을 피해야 한다고 많이 들었다. 그래도 테스트나 알고리즘 문제를 풀 때는 굉장히 유용하다. 남의 풀이처럼 하나씩 분리해서 비교하는 방식이 실제로는 더 올바른 접근일 수 이라고 생각한다. 하지만 역시 eval()의 유혹을 뿌리치기는 어렵네...

profile
안녕하세요, 김건우입니다! 웹과 앱 개발에 열정적인 전문가로, Next.js 14, Node.js, Express, Flutter 등을 활용한 프로젝트를 다룹니다. 제 블로그에서는 개발 여정, 기술 분석, 실용적 코딩 팁을 공유합니다. 창의적인 솔루션을 실제로 적용하는 과정의 통찰도 나눌 예정이니, 궁금한 점이나 상담은 언제든 환영합니다.

0개의 댓글