copyrat90   4년 전

https://www.acmicpc.net/source...

시간 초과가 뜨면 이해를 하겠는데, 틀렸습니다가 뜨네요.

1~14까지 다 넣어보고 정답이랑 비교해봤는데 똑같았습니다.

혹시 시간초과인거면 어떻게 시간을 줄일 수 있을지 알려주시면 감사하겠습니다.

djm03178   4년 전

시간 초과였으면 시간 초과라고하지 절대로 틀렸습니다라고 하지 않습니다. 틀린 건 그냥 틀린 겁니다.

14일 때의 답은 365595인데 그렇게 안 나옵니다.

https://ideone.com/ZRILY2

copyrat90   4년 전

컴파일러 환경에 따라 차이가 있는건지,

wandbox.org 에서 돌렸을 때는 365,596 이 나오는데

ideone.com 에서 돌리니 70,456 이 나오네요.

bool board[14][14];

bool board[15][15];

로 바꾸니 문제가 풀리긴 했는데, 왜 풀리는지 모르겠네요.

컴파일러 환경에 따라 답이 달라지는 것도 이해가 안 가고요.


N=14 까지라서 15번 인덱스에 접근할 일은 없을텐데...

kipa00   4년 전

14라고 쓰면 13번 인덱스까지만 접근할 수 있습니다.

copyrat90   4년 전

댓글 마지막 줄을 잘못 적었군요. 

문제에서 주어진 조건이 (1 ≤ N < 15) 이므로, 15번째 인덱스인 14번 인덱스에 접근할 일은 없다.

라고 적었어야 했는데.

N=14 이니 최대 14X14 짜리 체스판까지 계산해야 하고,

bool board[14][14];

이렇게 선언해도 0번~13번 인덱스로 전부 계산 가능해야 하는데, 제가 어디서 코드를 잘못 짰는지 안 보이네요.

눈이 안 좋은 것 같습니다.

+ 앞으로 그냥 이런 문제에서 자유롭기 위해서 배열 크기 넉넉하게 잡아야겠습니다.

dyk777   4년 전

대각선 체크할때 범위를 벗어나서 체크하고 있는 것 같습니다.

kjw13   4년 전

제 코드는 14를 입력했을 때 365596을 출력하는데 정답처리 됐습니다. 문제가 있는 걸까요?? 

djm03178   4년 전

undefined behavior가 있기 때문이라면 그렇게 될 수 있습니다.

jwl2327   4년 전

@djm03179 저도 그렇게 되서 정답이 되었는데 그러면 잘못 푼것인가요? 

djm03178   4년 전

배열의 크기를 넘어서 접근한다는 건 그냥 무슨 일이 일어날지 모르는 것입니다. 그렇게 해서 틀렸습니다가 나올 수도 있고, 시간 초과가 나올 수도, 메모리 초과, 런타임 에러, 출력 형식, 출력 초과, 심지어는 맞았습니다가 나와도 전혀 이상하지 않습니다.

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