"저만 그런거 아니죠?"
print(10 / 3)
print(10 // 3)
print(10 % 3)
"출력값은 뭘까~요?"
print(10 / 3) # 3.3333333333333335
print(10 // 3) # 3
print(10 % 3) # 1
"맞추셨나요?"
나누기 연산자의 역할은 다음과 같습니다
/: 나누기
//: 나누기 연산 후 소수점 이하의 수를 버리고, 정수 부분의 수만 구함 (몫)
%: 나누기 연산 후 몫이 아닌 나머지를 구함
다음 문제를 풀어보겠습니다.
다음의 방정식을 해결하는 프로그램을 구현 하세요. x값을 구해야 합니다.
- ax = b
결과 출력물은 다음과 같아야 합니다.
Input 으로 주어진 a 와 b 값으로 위의 방정식을 충족하는 단 하나의 정수가 존재한다면 해당 정수를 출력하면 됩니다
만일 a 와 b 값으로 위의 방정식을 충족하는 정수가 없다면 "No Solution"을 출력해주세요.
a 와 b 값으로 위의 방정식을 충족하는 정수가 많다면 "Many Solutions"을 출력해주세요.
- Hint:
a 나 b 는 0이 될 수 있습니다.- Examples:
만일 a = 1, b = -2 라면 결과값으로 -2가 출력이 되어야 합니다.
만일 a = 2, b = -1 라면 결과값으로 "No Solution"이 출력이 되어야 합니다
logic
a = int(input("첫번째 정수"))
b = int(input("두번째 정수"))
if a == b:
print("Many Solutions")
else:
if (a == 0 and b != 0) or (a != 0 and b == 0):
print("No Solution")
else:
print(b / a)
"답일까요?"
테스트 케이스 중 a = 1, b = -2 라면 결과값으로 -2가 출력해야 하지만 -2 / 1의 결과값으로는 -2.0이기 때문에 오답처리되었습니다.
나누기 연산(/) 시 결과가 float 자료형(Data Type)으로 처리됩니다.
따라서 다음과 같이 조건을 수정했습니다.
a = int(input("첫번째 정수"))
b = int(input("두번째 정수"))
if a == b:
print("Many Solutions")
else:
if (a == 0 and b != 0) or (a != 0 and b == 0) or (type(int) != type(b / a) and (b / a > 0)): # 나눈 값이 양수 일때, int형이 아니라면
print("No Solution")
else:
print(int(b / a)) # int 함수로 형변환
나누기 연산 후 float 자료형으로 처리되는 것은 생각해보면 당연한 결과였습니다
나누기 연산을 한다면 결과값은 대부분 소수가 붙어있을 것이다(실수)
아무 수 2개나 불러보시길 바랍니다
그리고 나눠보세요!
>>> 76 / 0.8
95.0
즉, 숫자의 나누면 대부분 실수일 것이므로
정수의 결과가 나온다 하더라도 float 자료형으로 처리되는 겁니다!