ax=b를 만족하는 x 값 구하기
문제는 이러합니다.
처음 접근: x의 리스트를 구해서 x를 if문 안에 넣으려 했습니다. for문을 이용하여 x를 담을 리스트에 x값을 넣으려 했으나, for문의 범위를 정하는 단계부터 어려움을 겪었습니다.
옳게된 접근 :
약간의 수학적 지식이 필요합니다..
a와 b의 값에 따라 해의 개수가 정해지기에, x를 따로 구할 필요가 없습니다. 위의 도표에 따라 if문을 작성해 줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | a = int(input("첫번째 정수")) b = int(input("두번째 정수")) if a != 0: if if type(b/a) != int: print("No Solution") elif if type(b/a) == int: |
음 .. 당연히 될 줄 알았는데 해결이 되지 않습니다...
위의 도식에 따라 if문을 작성하기만 하면 되는 줄 알았는데 도무지 이유를 모르겠습니다..
무엇이 문제였는지 테스트케이스를 찬찬히 뜯어보다가 문제를 발견했습니다.
a = 2
b = -4 를 입력하면
x가 -2가 나와야 하는데 "No Solution"이 지속적으로 발생합니다.
왜 그럴까요???
print(type(b/a)) 를 하고 나서야 이유를 알았습니다.
당연히 -4를 2로 나누면 당연히 정수 2가 나오겠거니.. 한 제 생각이 틀린것입니다.
파이썬은 나누기를 하면 float 값을 반환합니다!!!!
그래서 계속 No solution이 나왔던 것입니다.
이 문제를 단순 data type 확인을 통해 풀 수 없음을 깨달아야 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | a = int(input("첫번째 정수")) b = int(input("두번째 정수")) if a != 0: if b%a != 0: # if type(b/a) != int 이전 코드 print("No Solution") elif b%a == 0: # if type(b/a) == int 이전 코드 print(b/a) elif a == 0: if b != 0: print("No Solution") elif b == 0: print("Many Solutions") |
b/a 가 정수 값인지 확인하기 위하여 b를 a로 나눴을 때의 나머지가 0 인지를 검사하였습니다. 이렇게 작성한다면 오류 없이 문제가 해결됩니다.
5번 라인과 7번라인에 에 int(b/a) != b/a 이런식으로 b/a가 int 값이 되는지 확인하는 방법도 있습니다.
b/a의 타입을 print해보지 않았다면 아직도 헤매고 있었지도 모릅니다..
이렇듯 문제를 해결하는 과정에서 도무지 알 수 없는 에러들이 발생하면 코드의 전개 과정을 print
등을 이용하여 일일히 뜯어본다면 문제 해결에 도움이 될 수 있다는 것을 배운 문제풀이였습니다.