내 코드
def solution(quiz):
answer = []
for i in quiz:
j, k = i.split(' = ')
if eval(j) == int(k):
answer.append("O")
else:
answer.append("X")
return answer
코드설명
- split(' = ')로 수식 분리
- 수식을 ' = ' 기준으로 나누어 왼쪽(j)과 오른쪽(k) 부분으로 분리합니다.
- j는 연산자가 포함된 수식이고, k는 결과값입니다.
- eval()을 사용해 계산
- eval(j)를 통해 문자열로 된 수식을 평가하여 숫자 결과를 얻습니다.
- 결과 비교
- 계산한 결과(eval(j))와 주어진 값(k)을 비교합니다.
- k는 문자열이므로, int(k)로 변환 후 비교합니다.
- "O" 또는 "X" 추가
- 결과가 같으면 "O", 다르면 "X"를 리스트에 추가합니다.
특징
- 명확한 논리: 수식을 분리하고 평가한 뒤, 비교하여 결과를 도출하는 과정이 직관적입니다.
- 공백 처리: ' = '로 분리하여 불필요한 공백 문제를 방지했습니다.
- 읽기 쉬운 구조: 반복문과 조건문으로 간결하게 작성되었습니다.
다른 코드
def valid(equation):
equation = equation.replace('=', '==')
return eval(equation)
def solution(equations):
return ["O" if valid(equation) else "X" for equation in equations]
코드설명
- replace('=', '==')
- =를 ==로 바꿔 수식 비교가 가능하도록 변환합니다.
- Python에서 =는 할당 연산자로 쓰이기 때문에, ==로 변환해야 논리 비교가 가능합니다.
- valid 함수
- 변환된 수식을 eval()로 평가하여 결과가 True 또는 False로 반환되도록 처리합니다.
- 리스트 컴프리헨션
- 주어진 수식 리스트를 반복하며 valid 함수 결과에 따라 "O" 또는 "X"를 바로 추가합니다.
특징
- 효율적: 리스트 컴프리헨션을 사용해 간결하고 빠르게 결과를 생성합니다.
- 재사용 가능: valid 함수로 수식 검증 로직을 분리하여 가독성이 높아졌습니다.
- 간결성: 불필요한 변수 선언 없이 수식 변환과 결과 도출을 한 줄로 처리합니다.
두 코드 비교
- 코드 구조
- 내 코드는 비교 과정을 명확히 나누고 반복문 안에서 순차적으로 처리합니다.
- 다른 코드는 valid 함수를 분리하고 리스트 컴프리헨션을 사용해 간결하게 작성했습니다.
- 가독성
- 내 코드는 초보자도 이해하기 쉬운 구조를 가지고 있습니다.
- 다른 코드는 Python의 문법에 익숙한 사람이 더 효율적으로 이해할 수 있습니다.
- 성능
- 두 코드 모두 효율적으로 동작하지만, 다른 코드는 반복문 내부에서 추가 변수를 생성하지 않아 약간 더 최적화되어 있습니다.
- 확장성
- 다른 코드는 valid 함수로 검증 로직을 분리했기 때문에, 수식 검증 방식을 바꿔야 할 경우 수정이 더 간편합니다.
- 내 코드는 전체 반복문 안의 로직을 수정해야 하므로 약간 덜 유연합니다.
결론
- 내 코드는 직관적이고 이해하기 쉬운 구조를 가지고 있어 초보자에게 적합합니다.
- 다른 코드는 Python의 고급 문법을 활용해 간결성과 성능을 추구한 코드로, 더 확장성이 높습니다.
- 두 방식 모두 문제 해결에는 적합하며, 상황에 따라 선택하면 됩니다. 😊
'프로그래머스' 카테고리의 다른 글
프로그래머스 | Python | 로그인 성공? (0) | 2024.12.23 |
---|---|
프로그래머스 | Python | 직사각형 넓이 구하기 (1) | 2024.12.20 |
프로그래머스 | Python | 외계어 사전 (0) | 2024.12.17 |
프로그래머스 | Python | 암호 해독 (0) | 2024.12.17 |
프로그래머스 | Python | 구슬을 나누는 경우의 수 (0) | 2024.12.16 |