파이썬 리플릿 25번 문제를 풀며 초반부의 파이썬 기초 개념들을 함께 정리해보려고 합니다.
문제는 x = b / a 를 만족하는 x 정수에 따라 함수를 구성하는 것이었는데요. 어떻게 접근해야 하나 고민해보니 x = b / a 에서 x가 정수라는 의미는 정수 b를 정수 a로 나눴을 때, 나머지가 0이라는 의미였습니다.
따라서 나머지를 찾는 % 연산자를 사용하여, 다음과 같이 작성했습니다.
if (b % a == 0):
x = int(b / a)
print(x)
여기서 정수를 정수로 나눴지만 x는 실수로 리턴되었기에 이를 int로 전환해주었습니다.
위와 같은 원리로 나머지가 0이 아닌 경우에는 정수가 아니므로 다음의 if 문을 추가합니다.
if (b % a != 0):
print("No Solution")
다음으로 정수에는 0이 포함되므로, a 또는 b가 0인 경우를 처리해야 합니다. 먼저, a가 0일 경우에는 무언가를 0으로 나누려 하므로 x = b / a라는 공식이 성립할 수 없습니다.
if (a == 0):
print("No Solution")
b가 홀로 0인 경우에는 a가 0이 아니라면 문제가 없습니다. 그러나 a와 b 모두가 0인 경우에는 어떨까요? x = 0 /0은 어떻게 이해할 수 있을까요?
이를 해결하기 위해서는 다시, a * x = b 로 돌아가야 했습니다. a가 0인 경우에는 x의 값과 무관하게 b의 값은 0이 됩니다. 즉, x의 값은 모든 (정)수가 될 수 있습니다.
if (a == 0 and b == 0):
print("Many Solutions")
이상을 정리하여 조합하면 다음과 같습니다.
if (a == 0 and b == 0):
print("Many Solutions")
elif (a == 0):
print("No Solution")
elif (b % a == 0):
x = int(b / a)
print(x)
elif (b % a != 0):
print("No Solution!")
문제의 의도에 맞게 if 문을 중첩해보자면 다음과 같이 정리할 수 있었습니다.
if (a == 0):
print("No Solution")
if (b == 0):
print("Many Solutions")
elif (b % a == 0):
x = int(b / a)
print(x)
elif (b % a != 0):
print("No Solution!")
반응형
'TIL' 카테고리의 다른 글
파이썬 이메일, 비밀번호, URL 유효성 검사 정규 표현식 - TIL 6 (0) | 2022.01.16 |
---|---|
장고 db_table 이름 지정과 활용 방법 - TIL 5 (0) | 2022.01.12 |
데이터 유형과 데이터베이스 종류 - TIL 4 (0) | 2022.01.11 |
파이썬 리스트에서 홀수 제외하기 - TIL 3 (0) | 2022.01.05 |
파이썬 함수와 파라미터 순서 - TIL 2 (0) | 2022.01.03 |