질문 1. For문 안의 scanf에서 띄어쓰기를 빼면 가능합니다.
scanf(“%d ”, &a[i]) -> scanf(“%d”, &a[i]);
질문 2. malloc 이라는 동적할당 방법을 배우면 가능합니다. C++을 배우시면 vector를 사용하는 방법도 있습니다.
도움이 되었으면 좋겠네요
10871번 - X보다 작은 수
질문 1. For문 안의 scanf에서 띄어쓰기를 빼면 가능합니다.
scanf(“%d ”, &a[i]) -> scanf(“%d”, &a[i]);
질문 2. malloc 이라는 동적할당 방법을 배우면 가능합니다. C++을 배우시면 vector를 사용하는 방법도 있습니다.
도움이 되었으면 좋겠네요
scanf
등의 입력 방법으로는 불가능하다고 생각하시면 됩니다. 왜냐하면, 표준적인 입력에서는 오타 교정 등을 목적으로 Enter 키를 입력할 때까지 추가적인 처리가 보류되기 때문입니다. (Enter 키는 그래서 Enter입니다! 입력을 확정하고 프로그램 실행 구문으로 들어간다는 의미입니다.) Windows 콘솔에서 이 과정을 무시하고 이런 입력을 꼭 구현해야겠다 싶으시면 conio.h
의 getch
나 kbhit
등의 비표준 함수를 참고하세요. 이 함수를 사용하는 경우 숫자 입력 등을 직접 구현하셔야 합니다. PS를 하는 데에는 굳이 이렇게 구현할 필요는 없습니다.scanf
의 공백 문자에는 의미가 있습니다.
isspace
). A single whitespace in the format string validates any quantity of whitespace characters extracted from the stream (including none).%c
를 포함하지 않는 이상 이 문자는 완전히 무의미하고 추가적인 syscall을 불러일으킬 수 있으므로, 분명한 의도가 없는 한 scanf
에서는 띄어쓰기를 완전히 제거하시는 것이 좋습니다.malloc
/calloc
등의 동적 할당, C++에서는 new
와 delete
를 이용한 동적 할당을 사용할 수 있습니다. STL container를 더 선호하신다면 std::vector
등을 이용할 수도 있습니다. C++에서는 둘을 섞어서 2차원 배열을 할당하는 것도 가능합니다. (vector<_T> *arr_2d = new _T[row_size] (col_size);
)댓글을 작성하려면 로그인해야 합니다.
ccdl1217_bac 2년 전
질문 1. scanf는 for로 구현할 수 없나요?
5 4
1 2 3 4 를 입력하면
012(확인용)
으로 출력됩니다.
for를 통해 scanf로 1개씩 받아들이면, 1 02 13 2이렇게 출력되어야 한다고 생각했는데 하나씩 입력받는게 불가능한가요?
질문2. a[10000]으로 설정한 이유가 a[num]이 불가능해서 이렇게 설정했습니다. 집합을 미지수에 따라 크기를 다르게 설정할 수 있는 방법이 있을까요??
읽어주셔서 감사합니다. 답변 부탁드립니다. 감사합니다!!