문제 설명
문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.
- 두 수가 n과 m이라면
- ">", "=" : n >= m
- "<", "=" : n <= m
- ">", "!" : n > m
- "<", "!" : n < m
두 문자열 ineq와 eq가 주어집니다. ineq는 "<"와 ">"중 하나고, eq는 "="와 "!"중 하나입니다. 그리고 두 정수 n과 m이 주어질 때, n과 m이 ineq와 eq의 조건에 맞으면 1을 아니면 0을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n, m ≤ 100
문제 풀이
접근 전략
주어진 문자열에 따라서 조건문을 설정하고, 그에 따라 두 수를 비교하면 끝인데, "<" 이나 "=" , "!" 같은 문자도 저렇게 직접 비교가 되는지는 몰랐음.
코드
def solution(ineq, eq, n, m):
if eq == "!":
if ineq == ">" :
return int(n > m)
else :
return int(n < m)
else :
if ineq == ">" :
return int(n >= m)
else :
return int(n <= m)
결과 및 해석
위의 코드는 주어진 조건에 따라 n과 m을 비교하고, 이에 따라 1 또는 0을 반환하고 끝남. 시간 복잡도는 O(1)이며 공간 복잡도도 O(1)이다.
chatGPT 형님은 딕셔너리를 사용해서 더욱 깔끔하게 작성해줬다. 딕셔너리를 사용하여 조건을 정의하면, 각각의 조건을 더 명확하게 이해할 수 있고, 코드의 복잡도를 줄일 수 있게 하는 듯.
def solution(ineq, eq, n, m):
conditions = {
'>': { '=': n >= m, '!': n > m },
'<': { '=': n <= m, '!': n < m }
}
return int(conditions[ineq][eq])
'Python study > Programmers Lv0' 카테고리의 다른 글
[Programmers] 배열 만들기 2 (0) | 2023.07.23 |
---|---|
[Programmers] 수열과 구간 쿼리 2 (0) | 2023.07.19 |
[Programmers] 등차수열의 특정한 항만 더하기 (0) | 2023.07.19 |
[Programmers] 코드 처리하기 (0) | 2023.07.16 |
[Programmers] 대소문자 바꿔서 출력하기 (0) | 2023.07.15 |