포시코딩

[프로그래머스][Lv.0] OX퀴즈 본문

자료구조알고리즘/문제풀이

[프로그래머스][Lv.0] OX퀴즈

포시 2022. 12. 17. 03:27
728x90

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

내 풀이

def solution(quiz):
    answer = []
    for i in range(len(quiz)):
        a = quiz[i].split(" ")
        if a[1]=='+' and int(a[0])+int(a[2])==int(a[4]):
            answer.append('O')
        elif a[1]=='-' and int(a[0])-int(a[2])==int(a[4]):
            answer.append('O')
        else:
            answer.append('X')
    
    return answer

마침 신찬수 교수님의 스택을 이용한 계산기 구현하는 강의를 보다가 문제를 풀게 됐는데

그걸 보고 할까 하다가 문제를 보니

a ? b = c 와 같이 정해져있는 수식에다 기호는 '+', '-' 두 개 뿐이어서 바로 풀어도 풀리겠다 싶었다.

split을 통해 각 숫자와 기호를 배열에 넣어줬고 위치는 정해져 있으니 

'+'일 때랑 '-'일 때를 구분해 계산해서 맞으면 'O' 틀리면 'X'를 반환하면 되는 간단한 문제였다.

 

시간복잡도

시간복잡도는 O(N)

 

다른 풀이

다른 풀이들은 내 방식과 비슷하거나 다르면 eval() 함수를 사용해 텍스트 형태의 파라미터 값을 변형해 사용했는데

eval()을 쓰는 방법은 편법을 쓰는 기분이기도 하고 현업에서도 보안상의 위험 때문에 

사용을 자제하는 함수기도 해서 패스하기로 했다.

728x90