Computer Science/Algorithm Problem

백준] 2804 - 크로스워드 만들기(COCI 2011/2012)

TwinParadox 2018. 6. 28. 21:27
728x90

시간 제한 : 1초

메모리 제한 : 128MB




입력

첫째 줄에 두 단어 A와 B가 주어진다. 두 단어는 30글자 이내이고, 공백으로 구분되어져 있다. 또, 대문자로만 이루어져 있고, 적어도 한 글자는 두 단어에 포함되어 있다.




출력

A의 길이를 N, B의 길이를 M이라고 했을 때, 출력은 총 M줄이고, 각 줄에는 N개 문자가 있어야 한다. 문제 설명에 나온 것 같이 두 단어가 교차된 형태로 출력되어야 한다. 나머지 글자는 '.'로 출력한다.




소스코드

#include <iostream>
#include <string>
using namespace std;
int main(void)
{
	string a, b;
	int alen, blen, aIdx = -1, bIdx = -1;
	cin >> a >> b;
	alen = a.length();
	blen = b.length();
	for (int i = 0; i < alen && aIdx==-1; i++)
	{
		for (int j = 0; j < blen; j++)
		{
			if (a[i] == b[j])
			{
				aIdx = i, bIdx = j;
				break;
			}
		}
	}

	for (int i = 0; i < blen; i++)
	{
		if (i == bIdx)
		{
			cout << a;
		}
		else
		{
			for (int j = 0; j < alen; j++)
			{
				if (j == aIdx)
					cout << b[i];
				else
					cout << '.';
			}
		}
		cout << endl;
	}
}




Tip

간단한 문자열 처리 문제다.



728x90