

여러개의 정수를 입력 받고, 그중에서 특정 정수가 몇번 등장했는지 출력하는 문제이다.
이 문제는 2가지 풀이법이 있다.
(1) 정수의 범위가 -100~100 이니 size가 201인 1차원 배열을 만들고 입력 받은 정수 + 100을 인덱스로 배열에 등장 횟수를 누적하기
(2) N개의 정수가 주어지므로 -> size가 N인 1차원 배열 만들어서 입력 받은 정수를 모두 저장해두기 -> 전부 순회하면서 특정 정수가 몇 번 등장했는지 카운트하기
#include <stdio.h>
int main(){
int N, v;
int cnt=0;
scanf("%d", &N);
int arr[N]={};
for(int i=0; i<N; i++) scanf("%d", arr+i);
scanf("%d", &v);
for(int i=0; i<N; i++) if(v==arr[i]) cnt++;
printf("%d", cnt);
return 0;
}
#include <iostream>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int N,a,v;
int cnt[201] = {};
cin >> N;
for(int i=0; i<N; i++) {
cin >> a;
cnt[a+100]++;
}
cin >> v;
cout << cnt[v+100] << endl;
return 0;
}
for(int i=0; i<N; i++) scanf("%d", arr+i);
위와같이 배열 이름을 주소로써서 배열에 값을 저장할수도있다.
진짜 되는것 이다.C++에서 arr[2]는 컴파일러에 의해 자동으로 *(arr + 2) 로 변환된다.
즉, 역참조로 변환된다.
따라서 arr[2] = 5 와 같이 배열에 값을 대입할 수 있는 것이다.
cout << char 타입 데이터 하게되면 char 타입의 데이터가 ASCII 코드에 의해 특정 문자로 변환되고,
정수가 아니라 문자가 출력된다.
조심하자.
평소에 별로 신경쓰지않고 무의식적으로 코드를 작성했는데,
문득 보니 배열의 사이즈는 []로, 배열의 요소는 {} 로 한다는 것을 깨달았다. 나중에 헷갈릴수도 있으니 잘 외워둬야겠다.