dovmfflem   1년 전

PC에서는 잘 돌아가지만....


입력수가 늘어남에 따라 문제가 발생했습니다.


786까지는 되지만 1536과 3072가 해결되지 않는군요


삼각형의 출력형태에서 앞부분 공백은 출력이 불가피한 상황이고

뒷부분 출력은 건너뛰어 일부 해결했으니 최종 두개가 안되는 상황입니다.

어떻게 해야 출력초과를 극복할 수 있을까요...

yukariko   1년 전

우선, 뒤 공백은 자르지 않는게 맞습니다. 예제 출력을 잘 복사해서 살펴보시면 뒤에도 공백이 남아있음을 알 수 있습니다.

이 소스의 문제점은 배열의 크기입니다.

data 배열의 크기가 [3100][3100] 으로 되어있는데,

실제 max는 3072 * 6143 이 되어야 맞습니다.

[3100][6200] 정도로 잡아주면 되겠죠.


결론은 아래 소스처럼 바꿔주면 됩니다.


그리고 a의 b승을 구할 때 pow함수는 소숫점 오차를 유발하게 되므로 자제하는것이 좋습니다.

특히나 2의 n 승의 경우는 (1<<n)으로 바로 구할 수 있습니다.


마지막으로 이대로 제출하면 시간이 많이 느릴탠데,

문자열을 미리 배열로 만들어놓고 한번에 출력하거나, printf 대신 putchar를 사용하시면 더 빠르게 해결이 가능합니다.

dovmfflem   1년 전

배열크기를 간과하고 있었네요


답변 감사합니다

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