본문 바로가기
Algorithm/Baekjoon

Baekjoon 2804 크로스워드 만들기 JAVA

by Hunveloper 2022. 2. 18.
728x90
 

2804번: 크로스워드 만들기

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

www.acmicpc.net

문제

창영이는 크로스워드 퍼즐을 만들려고 한다.

두 단어 A와 B가 주어진다. A는 가로로 놓여야 하고, B는 세로로 놓여야 한다. 또, 두 단어는 서로 교차해야 한다. (정확히 한 글자를 공유해야 한다) 공유하는 글자는 A와 B에 동시에 포함되어 있는 글자여야 하고, 그런 글자가 여럿인 경우 A에서 제일 먼저 등장하는 글자를 선택한다. 마찬가지로 이 글자가 B에서도 여러 번 등장하면 B에서 제일 처음 나오는 것을 선택한다. 예를 들어, A = "ABBA"이고, B = "CCBB"라면, 아래와 같이 만들 수 있다.

.C..
.C..
ABBA
.B..
입력

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

출력

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

코드
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s1=sc.next(), s2=sc.next();
		int posi=0, posj=0;
		char [][] print=new char[s2.length()][s1.length()];
		for(int i=0;i<s1.length();i++) {
			if(s2.contains(s1.substring(i,i+1))) {
				posi=s2.indexOf(s1.charAt(i));
				posj=i;
				break;
			}
		}
		for(int j=0;j<s1.length();j++)
			print[posi][j]=s1.charAt(j);
		for(int i=0;i<s2.length();i++)
			print[i][posj]=s2.charAt(i);
		for(int i=0;i<s2.length();i++) {
			for(int j=0;j<s1.length();j++) {
				if(print[i][j]==0)
					System.out.print('.');
				else
					System.out.print(print[i][j]);
			}
			System.out.println();
		}
	}
}
728x90
728x90

'Algorithm > Baekjoon' 카테고리의 다른 글

Baekjoon 15683 감시 JAVA  (0) 2022.02.18
Baekjoon 2851 슈퍼 마리오 JAVA  (0) 2022.02.18
Baekjoon 2567 색종이 - 2 JAVA  (0) 2022.02.18
Baekjoon 1592 영식이와 친구들 JAVA  (0) 2022.02.18
Baekjoon 1987 알파벳 JAVA  (0) 2022.02.18

댓글