알고리즘 문제를 풀다가 분명 맞는 문제인데 제출을 하면 틀렸다고 나왔다. 여러번 봐도 알고리즘은 문제가 없었는데 틀리니까 정신이 혼미했다. 좌표계를 다루는 문제이기에 실수 연산에서 문제가 발생했다고 추측했지만 문제를 찾기가 어려웠다...
한참을 고민하다가 도움을 위해 질문 게시판을 쭉 돌아보니 출력을 format(num, '.2f')
로 바꾸라는 글을 보고 시도했더니 바로 성공했다. 원래는 round(num, 2)
를 썻다.
내가 알기로는 format
이나 round
나 같은 값이 나오는 걸로 알고 있었는데 잘못 알고 있었나 보다.
해당 문제는 백준 1774번 우주신과의 교감으로 마지막 출력 조건이 매우 매우 중요했다.
출력
첫째 줄에 만들어야 할 최소의 통로 길이를 출력하라. 출력은 소수점 둘째짜리까지 출력하여라.
소수점 둘째자리까지 출력하라는게 꼭 2자리까지 출력해야함을 의미했던 것이다. float
값으로는 format
이나 round
로 만드나 같았지만 str
이기에 달랐다. 아래 코드와 같은 상황에서는 문제가 될 수 있다는 걸 알았다.
코드
target = 1.103
a = str(round(target,2))
b = format(target,".2f")
print(a)
print(b)
결과
1.1
1.10
지문을 잘 읽자..... 완전 국어겜인데