hyunjin

[C++][기초-배열]1093~1099 , vector,stack,2차원 vector 초기화 본문

알고리즘 연습/코드업

[C++][기초-배열]1093~1099 , vector,stack,2차원 vector 초기화

_h.j 2020. 9. 4. 17:42
728x90

[1093] vector 사용

#include <bits/stdc++.h>
using namespace std;
int main(){
	int cnt,num;
	vector<int> snum(23);
	cin>>cnt;
	for(int i = 0 ; i < cnt ; i++){
		cin>>num;
		snum[num-1]++;
	}
	for(int elem : snum) cout<<elem<<" ";
	

	return 0;
}

 

 

[1094] stack이용

#include <bits/stdc++.h>

using namespace std;
int main(){
	int cnt,num;
	stack<int> snum;
	cin>>cnt;
	for(int i = 0 ; i < cnt ; i++){
		cin>>num;
		snum.push(num);
	}
	while(!snum.empty()){
		cout<< snum.top() <<" ";
		snum.pop();
	}
	return 0;
}

 

[1095]

#include <bits/stdc++.h>

using namespace std;
int main(){
	int cnt,num,min=23;

	cin>>cnt;
	for(int i = 0 ; i < cnt ; i++){
		cin>>num;
		if(num<min) min = num;
	}
	cout<<min;
	return 0;
}

 

 

 

[1096]

#include <bits/stdc++.h>

using namespace std;
int main(){
	int n ,x,y;
	vector< vector<int>> b;//(19,(19,0));
	b.assign(19,vector<int> (19,0) );
	cin>> n;
	for(int i = 0 ; i < n ; i++){
		cin>>x>>y;
		b[x-1][y-1] = 1 ;
	}
	for(int j = 0 ; j < 19 ;j++){
		for(int i = 0 ; i < 19 ; i++)
			cout<< b[j][i]<<" ";
		cout<<"\n";
	}
	
	return 0;
}

 x,y 입력이 바뀐거 같긴하지만 뭐 아무튼

 

이차원 vector 동적 초기화 방법

vector <vector<int>> v(10,(10,0)); //오류남

위의 방법으로 하면 오류가 난다.

 

n*n 사이즈 vector

//첫 번째 방법
vector<vector<int>> v1;
v1.assign(n , vector<int> (n,0)); //n*n vector

//두 번째 방법
vector<vector<int>> v2;
for(int i = 0 ; i < n ; i++){
	vector<int> element(n); //n개 짜리 1차 vector
    v2.psuh_back(element);
}

두 번째 방법 활용해 행과 열 개수 다른 vector도 생성 가능

 

 

 

[1099] 성실한 개미

#include <bits/stdc++.h>

using namespace std;
int main(){
	int n ,tmp;
	vector< vector<int>> v;
	v.assign(10,vector<int> (10,0) );
	
	for(int j = 0; j <10; j++){
		for(int i = 0 ; i < 10 ; i++){
			cin >> tmp;
			v[j][i] = tmp;
		}
	}
	int x=1,y=1;
	while(x<=8 && y <=8){ 
		if( v[y][x] ==2){
			v[y][x] = 9;
			break;
		}
		v[y][x] = 9;
		if(v[y][x+1] != 1){
				x++;
		}
		else{ //오른쪽 막힘 
			if(v[y+1][x] != 1)
				y++;
			else break;
		}		
	}
	for(int j = 0; j <10; j++){
		for(int i = 0 ; i < 10 ; i++){
			cout<<v[j][i]<<" ";
		}
		cout<<"\n";
	}
	
	
	return 0;
}
728x90