C++ 알고리즘 기초21 -배열 심화1(C++ 배열 초기화)-

1. 배열 값 참조

 

i번째 원소는 index i-1번에 위치한다.

 

index 0 1 2 3
arr   1 5 2 8

 

만약 2번 원소 2를 9로 바꾸고 싶다면, 해당 값을 참조해서, 9를 할당하면 된다.

 

arr[2] = 9;

 

다음은 2번 원소를 단순히 바꾸는 코드

 

#include <iostream>
using namespace std;

int main() {

	int arr[4];
	for (int i = 0; i < 4; i++) {
		cin >> arr[i];
	}
	cout << arr[2] << endl;
	arr[2] = 5;
	cout << arr[2] << endl;

	return 0;

}

>> 1 5 2 7

2
5

 

다음은 i번 원소를 2배해서 바꾸는 코드

 

#include <iostream>
using namespace std;

int main() {

	int arr[10] = { 1,2,3,5 };

	for (int i = 0; i < 4; i++) {
		arr[i] *= 2;
	}

	for (int i = 0; i < 4; i++) {
		cout << arr[i] << " ";
	}

	return 0;

}

 

 

2. 배열의 마지막 원소

 

배열의 크기가 n이라면 마지막 원소의 index는 n-1이다.

 

파이썬과는 다르게 음수 인덱스는 사용할 수 없다

 

#include <iostream>
using namespace std;

int main() {

	int n;
	int arr[105];

	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> arr[i];
	}

	cout << arr[n - 1];
	return 0;

}

 

3. 피보나치 수열 배열 없이 만들기

 

a,b에 각각 1을 넣고, 다음항 c = a +b;로 둔 다음에, a = b로 하고 b = c로 해서 반복문을 수행하면,

 

특정 피보나치 항을 배열 없이 구할 수 있게 된다

 

메모리 제한이 있을때 유용하게 사용할 수 있을듯

 

#include <iostream>
using namespace std;

int main() {

	int pp = 1, p = 1;

	for (int i = 3; i < 11; i++) {
		int temp = pp + p;
		pp = p;
		p = temp;
	}

	cout << p;
	return 0;

}

>> 55

 

4. 배열 초기화

 

C++에서는 자바와는 다르게 int 배열을 초기화할때, 기본값으로 0이 들어가지 않고 쓰레기값이 들어간다

 

그래서 모든 값에 0이 들어가게 초기화하고 싶다면,... 

 

// 숫자 별 출현 횟수.
int count_arr[7] = { 0, 0, 0, 0, 0, 0, 0 };

// 0으로 초기화이므로 이렇게 초기화할수도 있습니다.
int count_arr[7] = {};

// 혹은 다음과 같이
int count_arr[7] = {0,};

 

원소의 크기가 1이상 9이하인 n개의 원소가 주어졌을 때, 1부터 9까지 각각 몇 번씩 나왔는지를 출력하는 프로그램을 작성해보세요.

 

#include <iostream>
using namespace std;

int main() {
    // 여기에 코드를 작성해주세요.

    int n;
    cin >> n;

    int counting[10] = {0,};

    for(int i = 1; i <= n; i++){

        int a;
        cin >> a;
        counting[a] += 1;
    }

    for(int i = 1; i <= 9; i++){
        cout << counting[i] << endl;
    }
    return 0;
}

 

 

TAGS.

Comments