smugc201811147   5년 전

안녕하세요. dp를 막 공부하고 있는 학생입니다.

다름이 아니라, 아래 코드의 잘못 된 부분이나 반례를 찾고 싶어 질문 게시판에 글을 작성하게 되었습니다.

제가 생각 할 수 있는 범위 내에서의 출력값은 제대로 나오는 듯 하나, 백준 제출 시 [틀렸습니다]를 받고 있어 어느 부분이 문제인지 알고 싶습니다.

도움 주신다면 감사하겠습니다 ;ㅁ; .

smugc201811147   5년 전

슬랙에서 어떤 능력자(!)분이 해결해 주셨으나 혹시나 저와 비슷한 실수를 하실 분이 싶어 문제점을 남겨둡니다.

#define even(X) (!(X%2)) , 즉 매크로 함수가 문제였는데요.

짝수를 판별하려는 용도로 만들었기에,  even(pattern_DDR[node] - right) 이런 식으로 코드에 작성하였으나

even 매크로 함수의 안이 치환되면

(!(pattern_DDR[node]-right%2)) 가 되고, -보다 %가 연산자 우선순위가 높기 때문에 연산에서 오류가 나는 것이였습니다.

이전에 예제라던지 올바른 값이 나온건 순전이 운이였던 듯.. 싶습니다만,

혹시나 저처럼 매크로 함수를 썼다가 고생하시는 분이 생길까 싶어 댓글로 남겨두겠습니다.


매크로 함수를 사용하지 않거나,

#define even(X) (!((X)%2)) 로 바꾸니 해결되었습니다.

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