프로그래머스 파이썬 기초 해석 :: 조건 문자열(eval, replace)
프로그래머스 URL
https://school.programmers.co.kr/learn/courses/30/lessons/181934
프로그래머스 코딩테스트 카테고리
코딩 기초 트레이닝
Day 4 연산, 조건문 - 조건 문자열
Lv.0
문제 설명
문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.
두 수가 n과 m이라면
">", "=" : n >= m
"<", "=" : n <= m
">", "!" : n > m
"<", "!" : n < m
두 문자열 ineq와 eq가 주어집니다. ineq는 "<"와 ">"중 하나고, eq는 "="와 "!"중 하나입니다. 그리고 두 정수 n과 m이 주어질 때, n과 m이 ineq와 eq의 조건에 맞으면 1을 아니면 0을 return하도록 solution 함수를 완성해주세요.
문제 이해
문자열 ineq, eq
정수 n, m
출력값 : 정수 0 / 1 (False/True 활용 가능)
조건에 맞는지 확인하기 위한 if문 작성
내가 쓴 코드
def solution(ineq, eq, n, m):
if ineq == "<" :
return int(n <= m) if eq == "=" else int(n < m)
return int(n >= m) if eq == "=" else int(n > m)
중첩 if문 활용, ineq 변수의 "<" or ">" 먼저 확인하고, "="인지 "!" 인지 판별해서 값 출력
결과값은 정수여야하는데, bool 값을 활용하는거기 때문에 int(bool)형 변환해줌
업그레이드
1. eval ()
내장함수로, 문자열로 이루어진 식(연산)을 받아서 계산하고, 출력한다.
math = eval("a * b + 3") #eval() 값을 변수에 저장 가능
lenth = eval("len(list)")
print(eval("abs(-231)")) #print로 바로 출력
print(eval("round(5.531, 2)"))
print(eval('os.system('rm -rf *')'))
2. 객체명.replace () 메서드
text = "AbcAbcAAbc"
new_text = text.replace("A", "a")
#출력값은 "abcabcaabc"
new_text2 = text.replace("A", "a", 2)
#출력값은 "abcabcAAbc"
다른 사람의 풀이
1. if문 사용
def solution(ineq, eq, n, m):
if eq == '!':
eq = ''
return int(eval(f'{n} {ineq}{eq} {m}'))
2. replace() 메서드 사용
def solution(ineq, eq, n, m):
return int(eval(str(n)+ineq+eq.replace('!', '')+str(m)))
------------------------
느낀점
프로그래머스 기초 문제를 풀고, 고수들의 풀이를 보면서 많이 배운다. 내가 아직 배우지 못한 함수나 메서드, 문법들을 하나씩 알아가면서 또 적용해보는 맛이 있다. 메서드와 일반 내장함수 간의 차이도 점점 익히고 있고, eval 이라는 새로운 함수도 알게되었다. 아직까지 나의 코드는 중복성이 있는것 같다. 같은 코드를 어떻게 줄일지 계속 고민하면서 공부해야겠다.
댓글
댓글 쓰기