<c++> 배열

긍이·2023년 11월 4일
0

C++

목록 보기
5/12
post-thumbnail

이번엔 백준 4단계 배열을 풀어볼 것이다

우선 나는 array보단 list를 더 선호한다
크기 지정할 필요도 없구 깔끔하고 사용하기 더 편하다고 느껴진다

GameObject[] objarr = new GameObject[5];
GameObject[0] = obj1;
GameObject[1] = obj2;
list<GameObject> objlist = new list<GameObject>();
objlist.add(obj);

array보단 확실히 list가 더 사용하기 깔끔하고 편함

근데 c++에선 list 사용하는게 더 어려운듯..

c++을 배우면서 드는 생각인데
약간 중국어 간체와 번체차이 같다
우리 회사는 글로벌 시장을 타겟을 두고 게임을 만들어서
국가별로 텍스트 로컬라이징을 해줘야하는데
로컬라이징 작업을 할때보면
중국어 간체랑 번체가 비슷하게 생겼으면서도 자세히 보면 다르게 생겼다
암튼 c++과 C#도 생긴건 비슷한데 안되는게 많아서 그런 느낌이 든다

📌 배열

✔ 10807번 개수 세기

입력 받은 값으로 배열의 크기를 지정해주려고
const로 상수 선언 하고 만들어서 입력한 값을 넣고
배열을 크기를 지정하려고 했는데 안된다

list로 작성하려고 했는데

안되길래 c++ list에 대해 찾아봤는데
내가 알던 List와 아주 다른 것 같았다

그래서 일단 배열로 다시 풀어봤다

array 풀이

#include <iostream>

using namespace std;

int main()
{
	int n;
	cin >> n;

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

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

	cout << sum;
}

5
1 1 4 8 6
4
1

list로 사용해서 풀어보고 싶어서 list로도 풀어보았다

list 풀이

#include <iostream>
#include <list>

using namespace std;

int main()
{
	int n;
	cin >> n;
	
	list<int> list;

	for (int i = 0; i < n; i++)
	{
		int a;
		cin >> a;
		list.push_back(a); // 리스트의 맨 뒤에 추가
	}

	int v;
	cin >> v;
	int sum = 0;
	int size = list.size(); // 리스트의 개수
	for (int i = 0; i < size; i++) 
	{
		if (list.front() == v)
		{
			sum++;
		}
		list.pop_front(); // list.pop_front()  리스트의 첫번째 제거
	}
	cout << sum;
}

5
2 2 3 2 6
2
3

와 풀면서 느꼈는데
'이걸 사용 못한다고..?'를 몇번이나 말했는지 모르겠다

✔ 10871번 X보다 작은 수

#include <iostream>
#include <list>

using namespace std;

int main()
{
	int A, X;

	cin >> A >> X;

	list<int> _list;

	for (int i = 0; i < A; i++)
	{
		int num;
		cin >> num;
		if(num < X) 
			_list.push_back(num);
	}

	int size = _list.size();
	for (int i = 0; i < size; i++)
	{
		cout << _list.front() << " ";
		_list.pop_front();
	}
}

5 4
0 9 4 3 8
0 3

✔ 10818번 최소, 최대

#include <iostream>
#include <list>

using namespace std;

int main()
{
	int N;
	cin >> N;
	list<int> list;
	for (int i = 0; i < N; i++)
	{
		int num;
		cin >> num;
		list.push_back(num);
	}
	int min = 1000000;
	int max = -1000000;
	int size = list.size();
	for (int i = 0; i < size; i++)
	{
		if (min >= list.front())
			min = list.front();
		if (max <= list.front())
			max = list.front();
		list.pop_front();
	}
	cout << min << " " << max;


}

3
4
1
2
1 4

✔ 2562번 최댓값

#include <iostream>
#include <list>

using namespace std;

int main()
{
	list<int> _list;

	for (int i = 0; i < 9; i++)
	{
		int num;
		cin >> num;
		_list.push_back(num);
	}

	int max = 0;
	int maxnum =0;
	int size = _list.size();
	for (int i = 0; i < size; i++)
	{
		if (max < _list.front())
		{
			max = _list.front();
			maxnum = i + 1;
		}
		_list.pop_front();
	}
	cout << max << "\n" << maxnum;
}

1
2
3
4
5
6
7
8
9
9
9

✔ 10810번 공 넣기

#include <iostream>
#include <list>

using namespace std;

int main()
{
	int N, M;
	cin >> N >> M;

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

	for (int i = 0; i < M; i++)
	{
		int a, b, c;
		cin >> a >> b >> c;

		for (int j = a; j <= b; j++)
		{
			arr[j-1] = c;
		}
	}
	for (int i = 0; i < N; i++)
	{
		cout << arr[i] << " ";
	}


}

5 4
2 4 1
1 3 2
2 4 2
3 3 4
2 2 4 2 0

✔ 10813번 공 바꾸기

#include <iostream>

using namespace std;

int main()
{
	int N, M;
	cin >> N >> M;
	int* arr = new int[N];

	for (int i = 0; i < N; i++)
	{
		arr[i] = i + 1;
	}
	for (int i = 0; i < M; i++)
	{
		int a, b, orga;
		cin >> a >> b;
		orga = arr[a-1];
		arr[a - 1] = arr[b - 1];
		arr[b - 1] = orga;
	}
	for (int i = 0; i < N; i++)
	{
		cout << arr[i] << " ";
	}
}

5 4
2 2
2 4
3 5
1 5
3 4 5 2 1

✔ 5597번 과제 안 내신 분..?

#include <iostream>

using namespace std;

int main()
{
	int arr[30];
	for (int i = 0; i < 30; i++)
	{
		arr[i] = i + 1;
	}

	for (int i = 0; i < 28; i++)
	{
		int num;
		cin >> num;
		arr[num - 1] = 0;
	}

	int min = 30;
	int max = 0;

	for (int i = 0; i < 30; i++)
	{
		if (arr[i] == 0)
			continue;
		if (min > arr[i])
			min = arr[i];
		if (max < arr[i])
			max = arr[i];
	}

	cout << min << "\n" << max;

}

3
4
5
6
7
8
9
10
13
23
11
12
14
15
16
17
18
19
20
21
22
24
25
26
1
27
28
30
2
29

✔ 3052번 나머지

#include <iostream>

using namespace std;

int main()
{
	int arr[10];

	for (int i = 0; i < 10; i++)
	{
		arr[i] = -1;
	}

	int check = 0;

	for (int i = 0; i < 10; i++)
	{
		int num;
		cin >> num;

		for (int j = 0; j < 10; j++)
		{
			if (arr[j] == -1)
			{
				arr[j] = num % 42;
				break;
			}
			if (arr[j] == num % 42)
			{
				check++;
				break;
			}
		}
	}

	cout << 10 - check;

}

42
84
252
420
840
126
42
84
420
126
1

✔ 10811번 바구니 뒤집기

#include <iostream>


using namespace std;

int main()
{
	int N, M;

	cin >> N >> M;

	int* arr = new int[N];
	for (int i = 0; i < N; i++)
	{
		arr[i] = i + 1;
	}

	for (int i = 0; i < M; i++)
	{
		int a, b, c;

		cin >> a >> b;

		c = b - a + 1;
		int* arr2 = new int [c];

		for (int j = 0; j < c; j++)
		{
			arr2[j] = arr[b - j-1];
		}

		for (int j = a; j <= b; j++)
		{
			arr[j-1] = arr2[j - a];
		}
	}

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

5 4
2 2
1 2
2 4
3 5
2 4 5 1 3

✔ 1546번 평균

#include <iostream>

using namespace std;

int main()
{
	int N;
	cin >>N;

	int max = 0;

	double sco = 0;
	for (int i = 0; i < N; i++)
	{
		double num;
		cin >> num;
		if (max < num) max = num;
		sco += num;
	}

	cout << sco/N / max * 100;
}

9
10 20 30 40 50 60 70 80 90
55.5556

0개의 댓글

관련 채용 정보