처음 문제를 보고 어떻게 해야할 지는 한눈에 보였지만
if절 중첩에.. 쓸데없이 코드가 너무 길어질 것 같았다
def solution(ineq, eq, n, m):
answer = 0
if ineq=='<' and eq=='=':
if n<=m:
answer = 1
elif ineq=='>' and eq=='=':
if n>=m:
answer=1
elif ineq=='>' and eq=='!':
if n>m:
answer = 1
else:
if n<m:
answer=1
return answer
그래도 일단 써봄
마음에 안 들었지만 줄이는 걸 모르겠어서 일단 제출 후..! 다른 사람 풀이 참고
풀이 1)
def solution(ineq, eq, n, m):
answer = 0
if n > m and ineq ==">":
answer = 1
elif n < m and ineq == "<":
answer = 1
elif n == m and eq == "=":
answer = 1
return answer
'같다' 라는 상황이 중복됐으므로 상황을 풀어놓은 것
문제에서 중복된 상황을 하나로 빼버리는 것은 기억할 아이디어라고 생각한다
풀이 2)
def solution(ineq, eq, n, m):
return int(eval(str(n)+ineq+eq.replace('!', '')+str(m)))
ineq: 부등식을 나타내는 문자열. 예를 들면 '<', '>' 등이 가능
eq: 등식을 나타내는 문자열입니다. 여기에는 '='이나 '!='와 같은 등호 관련 표현이 올 수 있다.
n: 부등식/등식에 사용될 첫 번째 숫자
m: 부등식/등식에 사용될 두 번째 숫자
코드에서 eq.replace('!', '') 부분은 등호 관련 표현에서 '!'를 제거하는 역할. '!='와 같은 형태의 등호를 처리하기 위해 사용되었다.
+eval함수 설명
eval 함수는 주어진 문자열을 파이썬 표현식으로 간주하고 해당 표현식을 실행하여 결과를 반환하는 내장 함수.
즉, 문자열로 표현된 파이썬 코드를 실행하는 역할을 한다.
result = eval("2 + 2")
print(result) # 출력 결과: 4
위의 예시에서 eval은 문자열 "2 + 2"를 파이썬 표현식으로 해석하고 해당 표현식을 계산하여 결과값인 4를 반환한다.
그러나 eval 함수는 보안 문제와 코드의 예측 불가능성으로 인해 일반적으로 권장되지 않는다고 한다.
실행되는 코드가 동적으로 생성되기에 디버깅이 어려울 수 있다.
'코딩 테스트 & 문제 해결 > 코딩 테스트 연습' 카테고리의 다른 글
[BOJ] [python] 14888: 연산자 끼워넣기 (1) | 2025.01.03 |
---|---|
[준랩] [python] 1082: 특정 대문자를 소문자로 바꾸기 (3) | 2024.12.24 |
[BOJ] [python] 2941: 크로아티아 알파벳 (0) | 2024.12.23 |
Programmers -코딩테스트 연습>코딩 기초 트레이닝>수 조작하기 1 (1) | 2024.02.10 |
programmers -코딩테스트 연습>코딩 기초 트레이닝 (1) | 2024.01.27 |