asd0014a   1년 전

#include<string.h> 없이 8958번 OX퀴즈를 풀었습니다.

cnt로 O의 개수를 센 다음, X가 입력되면 삼각수 구하는 공식((cnt * (cnt + 1)) / 2)을 통해 지금까지의 점수 합을 계산하고, 계산된 점수를 ans에 쌓아둔 뒤 cnt를 0으로 초기화하는 식으로 문제를 풀었습니다. \n을 입력 받았을 때는 여기에 ans를 프린트한 다음 ans=0으로 초기화시킨 뒤 end를 하나씩 늘려서 처음 친 숫자 만큼만 프로그램이 돌아가게 만들었습니다.

코드가 깔끔하지는 않지만 여기에 딱히 논리적 결함이 있는 것 같지도 않고, 예제를 입력하여도 답이 출력 예제와 똑같이 나오는데... 채점을 하면 틀렸다고만 나와서 도통 모르겠습니다. 어디가 문제인 걸까요?ㅠㅠ

peydihalta   1년 전

혹시나 하는 생각일지도 모르지만, 테스트 케이스의 마지막에 \n이 입력된다는 보장이 있나요? 없다면 마지막 테케는 출력이 아예 안 될 것 같아서요.

djm03178   1년 전

마지막의 개행은 보장됩니다.

문제는 전체 글자 수가 80자 이하라는 보장이 없다는 점입니다.

asd0014a   1년 전

8958번 문제의 조건을 보면, "길이가 0보다 크고 80보다 작은 문자열이 주어진다."라고 적혀있어서 크기를 80으로 만들었는데... 이게 문제일까요?ㅠㅠ;

djm03178   1년 전

네. 그 부분만 고치면 맞습니다.

조건에 주어진 80 미만의 길이는 각 테스트 케이스별 문자열의 길이가 80 미만이라는 뜻이지, 전체 테스트케이스에서의 문자의 수의 합이 80 미만이라는 뜻이 아닙니다.

asd0014a   1년 전

댓글 감사드려요!! 배열 크기를 9999로 하고 13번 줄을 for (a = 0; a < 9999; a++) 로 바꾸니까 되네요 ㅎㅎ

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