[java][boj][b2] 2804. 크로스워드 만들기
728x90

https://www.acmicpc.net/problem/2804

 

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개 문자가 있어야 한다. 문제 설명에 나온 것 같이 두 단어가 교차된 형태로 출력되어야 한다. 나머지 글자는 '.'로 출력한다.

풀이

/*
 * 입력
 * 1. 두 단어 A B
 * 출력
 * 크로스 워드
 * 
 * >> 두 단어 사이에 겹치는 단어를 찾아(가장 처음 나온 단어) 크로스 워드를 만든다
 * >> 나머지 글자는 .으로 출력한다
 */

코드

package im형필수문제;

import java.util.*;
import java.io.*;

public class b2_2804_크로스워드만들기 {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		StringBuilder sb = new StringBuilder();
		
		String A = st.nextToken();
		String B = st.nextToken();
		
		char[] wordA = new char[A.length()];
		char[] wordB = new char[B.length()];
		
		wordA = A.toCharArray();
		wordB = B.toCharArray();
		
		int numA = 0;
		int numB = 0;
		
		outer: for(int i = 0; i < A.length(); i++) {
			for(int j = 0; j < B.length(); j++) {
				if(wordA[i]==wordB[j]) { //글자가 같으면 해당하는 행과 열 뽑기
					numA = j;
					numB = i;
					break outer; //제일 처음 것만 보면 되기 때문에 break
				}
			}
		}
		
		for(int i = 0; i < B.length(); i++) {
			for(int j = 0; j < A.length(); j++) {
				if(i==numA) sb.append(wordA[j]);
				 else if(j==numB) sb.append(wordB[i]);
				 else sb.append(".");
			}
			sb.append("\n");
		}

		System.out.println(sb);
	}
}

결과

 

#자바 #java #boj #백준 #알고리즘

728x90

'알고리즘 > BOJ' 카테고리의 다른 글

[java][boj][s4] 2840. 행운의 바퀴  (0) 2022.02.19
[java][boj][s4] 1063. 킹  (0) 2022.02.19
[java][boj][s5] 3060. 욕심쟁이 돼지  (0) 2022.02.18
[java][boj][s3] 3085. 사탕 게임  (0) 2022.02.17
[java][boj][g4] 1987. 알파벳  (0) 2022.02.17