매우 간단해 보이지만 틀리고 고민을 꽤 한 문제이다.
이 문제의 핵심은 floating point error이다.
이 문제에서 파이썬을 사용해서 계속 오답이 나온다면 그것은 파이썬의 // 연산자를 사용해야 하기 때문일 것이다.
파이썬에서 // 연산자란?
파이썬에서 나누기 연산 후, 소수점 이하의 수를 버리고 정수 부분의 수만 구한다.
print(int(int(N)*int(M)/2)) VS print(int(int(N)*int(M)//2))
값이 커질수록 서로 결과값이 다르게 나온다.
예를 들어, 999999993 999999993 값을 입력시킨다면 답이 다르게 나올 것이다.
/를 사용하면 : 499999993000000000
//를 사용하면 : 499999993000000024
따라서, 위의 문제에 상응하는 답을 가지기 위해서는 //를 사용해야 한다.
1
2
|
N, M = input().split()
print(int(int(N)*int(M)//2))
|
cs |
출처: https://www.acmicpc.net/board/view/48568
글 읽기 - 최대개수를 잘못 구했나요오오오...
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
'코딩 문제풀이 및 연습 > Python 연습' 카테고리의 다른 글
[백준] 1297_TV 크기 파이썬 (0) | 2021.07.22 |
---|---|
파이썬 진법 변환(2진수, 8진수, 16진수, 10진수) (0) | 2021.07.20 |
[백준] 21612_Boiling Water 파이썬 (0) | 2021.07.19 |
[백준] 20499_Darius님 한타 안 함 파이썬 (0) | 2021.07.19 |
[백준] 20332_Divvying Up 파이썬 (0) | 2021.07.19 |