duddnd904   5년 전

1546번 문제를 풀었습니다.

잘 실행되는데 %도 아니고 아예 틀렸다고 나와서 거듭 몇번 시도해봤는데 어디가 문제인지를 모르겠습니다.ㅠㅠ 고수분들 저의 코드 어디가 문제인지

한번만 봐주시길 부탁드립니다.

adfsfsf   5년 전

일단, 점수는 항상 100 이하이므로 34 ~ 38번 줄은 의미가 없습니다. 또한, 입력 및 출력이 모두 float이므로 문제 의도에 따라서 답이 달라질 수 있습니다. 아래 예제를 통해 설명해드리겠습니다. 아래에 적은 예제는 작성자님 기준으로 59.60을 출력하지만, 제가 정답처리를 받은 코드는 60.00을 출력합니다. 이와 같이, 몇몇 케이스의 경우 풀이 과정의 차이로 답이 달라집니다. 문제에서 요구하는 방식을 다시 생각해보시는 것이 좋을 것 같습니다.

duddnd904   5년 전

좋은 답변 감사합니다.

하지만 주신 반례를 가지고 수정했음에도 불구하고(위 반례는 답변자님과 같은 값을 출력합니다.), 계속 틀렸다고 뜨네요 ㅠㅠ...

adfsfsf   5년 전

반례가 중요한 게 아니라, 제가 적은 내용 중 풀이 과정에 따라 답이 달라질 수도 있다는 부분이 중요한 겁니다. 보다 간단한 방법의 풀이가 존재하며, 해당 풀이는 float 연산이 더 적어서 보다 정확한 답이 나옵니다.

adfsfsf   5년 전

구체적으로 쓰자면, joojak() 함수가 과연 필수적인지를 다시 생각해보시는 것이 좋을 것 같습니다.

djm03178   5년 전

다른 게 틀린 게 아니고, 수정된 코드 기준으로 14~16번째 줄이 잘못되었습니다.

  1. "이 값은 100보다 작거나 같은 음이 아닌 정수이고," 이므로 0점도 유효한 점수입니다. 그러니 0점이 발견되었을 때 탈출하면 안 됩니다.
  2. 끝을 판단하기 위해 사용하신 것 같지만, 안타깝게도 malloc은 할당받은 메모리 내용을 초기화해주지 않습니다. 그래서 입력받은 배열 이후의 내용이 0이라는 보장도 없습니다.

깔끔하게, 기존의 크기를 저장해둔 뒤 n을 그 크기까지만 증가시키면서 확인해주면 됩니다.

duddnd904   5년 전

14~16번째 줄을 말씀해주신 대로 고쳤더니 됐습니다 ㅠㅠㅠㅠㅠㅠㅠㅠㅠ

위엣 분도 그렇고 아래 답글 남겨 주신 분들 너무너무 감사드립니다 :)

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