본문 바로가기
알고리즘/문제

구름 문제은행 (배열 합치기) <C++>

by 코드 이야기 2020. 7. 4.
728x90

 

 

 

 

구름 문제은행에 있는 문제들 몇몇은 참 조건이 부족해서 문제를 읽을 때 참 불편한 느낌이 있다.

게다가 구름 문제? 보다 윤군님 문제가 더 많은 것 같기도;;

a, b의 범위라던지 등등 대강 했더니 맞았다.

 

입출력 예시 1로 설명하겠다. 

a_pointer와 b_pointer이 각각 0부터 시작한다.

a[0]과 b[0]을 비교해서 b[0]이 더 작으므로 b[0]을 출력하고 b_pointer은 1이 된다.

a[0]과 b[1]을 비교해서 a[0]이 더 작으므로 a[0]을 출력하고 a_pointer은 1이 된다. 

.

.

.

쭉쭉 가다가 a배열이나 b 배열이 끝까지 간 상황이라면 하나만 출력한다.

 

#include <iostream>
using namespace std;
int main() {
	int a_size, b_size;
	int a[1001], b[1001];
	int a_pointer=0, b_pointer=0;
	
	cin>>a_size>>b_size;
	for(int i=0; i<a_size; i++)
		cin>>a[i];
	for(int i=0; i<b_size; i++)
		cin>>b[i];
	
	while(1)
	{
		if(a[a_pointer]<=b[b_pointer] && a_pointer<a_size &&a[a_pointer])
		{
			cout<<a[a_pointer]<<" ";
			a_pointer++;
		}
		else if(a[a_pointer]>=b[b_pointer] && b_pointer<b_size && b[b_pointer])
		{
			cout<<b[b_pointer]<<" ";
			b_pointer++;
		}
		else if(a_size<=a_pointer && b_pointer<b_size)
		{
			cout<<b[b_pointer]<<" ";
			b_pointer++;
		}
		else if(b_size<=b_pointer && a_pointer<a_size)
		{
			cout<<a[a_pointer]<<" ";
			a_pointer++;
		}
		else if (b_size<=b_pointer || a_size<=a_pointer) break;
			
		
	}
	
	
	return 0;
}

 

 

 

728x90

댓글