ljy8947   1년 전

돌려봤을 때 정답과 동일하게 나오는데 온라인 저지 상으로는 맞았습니다가 안 나옵니다.

10시간 넘게 고민을 하고 코드를 고쳐봐도 답이 안나와서 질문 드립니다.


Q1.

우선 5번 째 줄에, MAX_LEN의 크기에 따라 틀렸습니다. 런타임에러, 시간초과가 나옵니다.

MAX_LEN의 크기를 정하지 못한 이유는, 입력의 조건에서 각 테스트 케이스는 적어도 한 줄 이상이라는 조건과, 각 줄은 100글자를 넘지 않는다 라는 조건 때문입니다. 즉, MAX_LEN 은 n*100 이기 때문에 크기를 몇으로 해야 하는지 모르겠습니다.


Q2.

또한 정답을 보면, 소수점 둘째 자리에서 반올림 하라고 되어 있는데, 78.6%와는 달리 100%와 94%는 정수형으로 출력이 됩니다. 그래서 소수가 없는 정수형 값이 나오면 int로, 소수가 있으면 double 형으로 반환을 시켰는데 이것이 맞는 방법인지 모르겠습니다.

(double 형인 .1lf% 로 받으면, 100%와 94%가 100.0% 와 94.0%로 답과 다르게 출력됩니다.)


Q3.

48번째 줄에 strncat 함수를 사용하였습니다. 그러나 "strncat 은 보안 문제상 쓰지 말아야 한다. char* dest의 범위를 넘어갈 수 있다."라는 글을 어느 블로그에서 봤습니다. 하지만 MS의 VC가 아닌 리눅스에서는 strncat_s 같은 함수를 쓰지 못하는데, 해결책이 있는지 궁금합니다.


baekjoon   1년 전

A1. 모든 줄을 입력받고 문제를 푸는 것 보다 한 줄 입력받고 문제를 풀면서 답을 누적해가는 방향으로 푸는 것이 좋을 것 같습니다.

A2. 출력 설명에 애매모호한 부분이 있는데, 이럴 때는 예제를 참고해서 출력하면 됩니다. (지금 방법이 맞는 방법입니다)

A3. A1을 이용해서 문제를 풀면 strncat을 사용할 일이 없습니다. 아니면 C++의 string을 이용해 +나 +=를 이용하는 방법이 있습니다.

ljy8947   1년 전

감사합니다. 해결하였습니다!

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