정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.
첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)
둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.
X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.
10 5
1 10 4 9 2 3 8 5 7 6
1 4 2 3
#include <stdio.h> int main() { int N, X; scanf("%d X", &N, &X); for (int i=0; i<N; i++) scanf("%d ", &A[i]); for (int i=0; i<N; i++){ if A[i]<X printf("%d ", A[i]); } return 0; }
- scanf문에서 무슨 생각으로 "%d X"라 쓴 거지;;
잠이 덜 깼나 오늘 아침 이런 실수들 유난히 많다ㅋㅋㅠㅠㅠ- 글구 A배열은 선언도 안 한 채 사용하려다 여기서도 에러
- if문 조건 () 반드시 쳐줘야 되는구나..
C 배울 때도 살짝 헷갈렸던 기억이 있는데 이번에 제대로 기억하고 가자
#include <stdio.h> int main() { int N, X, A[]; scanf("%d %d", &N, &X); for (int i=0; i<N; i++) scanf("%d ", &A[i]); for (int i=0; i<N; i++){ if(A[i]<X) printf("%d ", A[i]); } return 0; }
위에서 에러난 건 다 고쳐줬다 생각했는데
배열 선언에서 A 사이즈를 지정해주지 않아 또 컴파일 에러🥲
배열 선언 방법 배울 때 여러 가지 방법 배웠었는데 이것도 가물가물하다.
이 기회에 강의자료 찾아서 정리해야지(밑에 정리해둠!)
#include <stdio.h> int main() { int N, X; scanf("%d %d", &N, &X); int A[N]; for (int i=0; i<N; i++) scanf("%d ", &A[i]); for (int i=0; i<N; i++){ if(A[i]<X) printf("%d ", A[i]); } return 0; }
정수 N값 받은 후에 배열 선언하는 걸로 살짝 수정
이제 잘 돌아간다.
배열 선언 시 꼭 크기 지정해주기!
#include <iostream> using namespace std; int main() { int N, X; cin >> N >> X; int A[N]; for (int i=0; i<N; i++) cin >> A[i]; if (A[i]<X) cout << A[i] << ' '; return 0; }
if문에서 에러~
생각 없이 기억에 의존해서 대충 짜면 이런 실수를 하게 된다....ㅎ
생각하면서 코드 짜고 변수 사용 범위 유의하자!!!
#include <iostream> using namespace std; int main() { int N, X; cin >> N >> X; int A[N]; for (int i=0; i<N; i++) cin >> A[i]; for(int i=0; i<N; i++){ if (A[i]<X) cout << A[i] << ' '; } return 0; }
int s[10];
배열은 선언과 동시에 초기화(특정 값을 넣어줌)가 가능
ex. int scores[5] = {10, 20, 30, 40, 50};
배열을 초기화하려면 값들을 콤마로 분리해 중괄호{ }로 감싼 후,
배열을 선언할 때 값을 대입해주기
ex. int scores[5] = {10, 20, 30};
-> 값을 생략한 부분은 자료형의 기본값으로 초기화됨!
(여기선 배열의 자료형이 int이므로 int의 기본값 0으로 배열의 4,5번째 값이 초기화)
배열의 크기가 주어지지 않으면 자동으로 초기값 개수만큼이 배열 크기로 잡힘. 배열을 초기화하는 가장 일반적인 방법
ex. int scores[] = {10, 20, 30, 40, 50};
-> 배열 scores의 크기는 5
초기값이 주어지지 않으면 일반 변수와 마찬가지로 아무 의미 없는 쓰레기값(garbage)이 들어감
ex. int scores[5];
-> 이렇게 배열을 선언만 하면 각 요소에 쓰레기값이 저장됨
초기화 시 중간 요소의 값이 생략되면 오류 발생
❌ int engScore[5] = {90, 100, , 85, 70};
⭕ int engScore[5] = {90, 100, 80 , 85, 70};
배열 크기 지정하지 않은 경우 반드시 초기화시켜야 함‼️
❌ int engScore[];
⭕ int engScore[] = {●●●};
중괄호를 이용해 배열에 값을 저장하는 건 초기화 시에만 가능
❌ int engScore[5]; engScore[5] = {90, 100, 80, 85, 70};
⭕ engScore[5] = {90, 100, 80, 85, 70};
즉, 초기화는 배열 선언과 동시에 해줘야!