roeniss   2년 전

안녕하세요. 비전공자 학생입니다. 취미(?)로 c언어로 문제를 하나씩 해결하는 중인데요,


이 문제의 핵심은 x=0, y=2^31-1의 값을 어떻게 처리하냐에 달려있다고 생각합니다.


저는 int가 처리할 수 없는 엄청 큰 값들에 대하여(좀 더 정확히 말씀드리자면, 약 2~3개의 값들) 아예 예외를 잡고 처리를 했습니다.

예를 들면, "(y-x) > (2^31 - 30) 일 때 -> 답은 k이다" 이런 식으로요. 답은 맞췄는데...


이런식으로 임의로 예외를 잡고 처리해도 좋은 해결방법인지 의문이 듭니다. 모든 변수에 대해 응답할 수 있는 코딩이 '더 좋은' 코딩인가요? 아니면 이게 최선인가요?

hun3555   2년 전

음... 저는 개인적으로 생각할 때 어느 쪽이든 좋은 코딩이 아닐까 생각합니다. 개인차이 정도가 아닐까...생각하기도 하고요. 저는 예외처리를 하는 쪽을 더 선호하는 편이기도 합니다. 쉽게 해결할 수 있는 부분은 그렇게 하는 쪽이 더 편하니까요.

모든 변수에 대해 응답할 수 있게 하다가 코드가 엉망이 되면 오히려 예외처리가 더 좋지 않을까요? 수학문제를 풀 때도 범위를 나눠서 푸는 경우가 종종 있는데 그런 걸 생각하면 큰 문제는 되지 않을 것이라고 생각합니다. 모든 변수에 대해 응답할 수 있는 더 간결한 알고리즘이 있다면 그 쪽을 선호하는 쪽이 더 낫겠지만요...

물론 저도 전공자는 아니어서 전공자 분들이 어떻게 생각하시는지까지는 잘 모르겠습니다. 다만 크게 다르지는 않을 것이라고 생각합니다. 그런데 저 문제는 어떻게 푸는 문제인지 힌트 좀 주실 수 있나요? 시도해보았는데 잘 모르겠네요.

roeniss   2년 전

에... 완전히 솔루션을 드리면 안되는 거겠죠 아마?

일부러 힌트를 쫌만 꼬겠습니다 지송합니다 ㅜㅜ

---

"n번 움직여서 최대로 이동할 수 있는 거리 a"가 키워드입니다

댓글을 작성하려면 로그인해야 합니다.