어떤 부분이 문제인지 잘 모르겠습니다..
원래 withcs의 input 예시 값을 복사한 다음 visualbasic 실행 창(검은 화면)에 입력하면 tab이 사라지나요?ㅠㅠ
제가 실험해볼 때는 다 되는데 input을 붙여넣기 하면 자꾸 tab수가 0으로 나와 혹시 이거 때문에 wrong answer가 뜨는건지 궁금합니다ㅠㅠ
#include <stdio.h>
int main() {
int c, ns, nt, nl; /*차례로 입력하는 것과 space, tab, line의 개수입니다*/
ns = 0;
nt = 0;
nl = -1;
while ((c = getchar()) != EOF) {
if (c == ' ') {
ns++;
}
if (c == '\t') {
nt++;
}
if (c == '\n') {
nl++;
}
}
printf("%d\n%d\n%d\n", ns, nt, nl);
return 0;
}
nl 초기값을 0으로 하니까 accepted가 됐네요ㅠㅠ
그런데 궁금한게 그렇게 하면 input값을 복사해서 넣어봤을 때 새 줄 수가 4가 아니라 5가 나오는데 왜 이게 정답인지 궁금합니다..
저는 처음에 nl =0을 했다가 요구하는 ouput인 4보다 하나 많은 5가 나오길래 문제가 요구하는게 전체 줄 수가 아닌 새 줄 수이기 때문에 nl = -1로 해야하는 구나라고 생각을 했었거든요ㅠㅠ
제가 어떤 부분을 잘 못 생각한 걸까요?
윈도우 명령창에는 탭키가 복붙이안되서 그렇습니다
줄수 하나 더 나오는건 복사해서 넣으실때 엔터누르는거때문에 그런거로밖엔..
복붙+엔터도 엔터가 추가로 붙는거라서요
혹시 그렇게 입력하고계신건 아닌지요
아 그런것 같습니다.
그런데 eof(컨트롤z)를 사용하기 위해서는 쓰고 싶은 내용들을 다 쓴 후에 바로 컨트롤z 누르고 엔터를 누르면 종료가 안되고 꼭 엔터+컨트롤z+엔터를 해야 하더라고요. 이런 상황에서 저 첫 번째 엔터가 새로운 라인(그냥 문자로도 카운트가 되는)이 되는건 어쩔 수 없는 것 같은데 그러면 저걸 상쇄 시켜주기 위해서 오히려 nl = -1로 해야 하는거 아닌가요ㅠㅠ
그리고 nl = 0으로 하고 종료까지 시키면 withcs에서 주셨던 인풋내용과 아웃풋 내용이 일치하지 않는데 왜 정답 처리가 되는 걸까요..ㅠㅠ
제출된 소스코드는 모두 리눅스 서버에서 돌리기때문에
사용하고계신 개발환경에 따라서 예시의 아웃풋과 다르게 나올 수 있습니당
참고로 리눅스는 EOF전에 \n을 필요로 하지 않습니다.
그냥 알고리즘에 맞게 짜시면 될거같아요!