본문 바로가기
BaekJoon/Bronze

[BOJ/JAVA] 백준 2804 : 크로스워드 만들기 (자바)

by HoonSikE 2022. 4. 4.
반응형
SMALL
문제 정보
  문제명   - 크로스워드 만들기
  난이도   - 브론즈 II
문제 번호 - 2804번

문제 링크

BOJ_B2_2804_크로스워드_만들기

 

2804번: 크로스워드 만들기

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

www.acmicpc.net


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

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

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

예제 입력/출력
예제 입력 예제 출력
BANANA PIDZAMA .P....
.I....
.D....
.Z....
BANANA
.M....
.A....
MAMA TATA .T..
MAMA
.T..
.A..
REPUBLIKA HRVATSKA H........
REPUBLIKA
V........
A........
T........
S........
K........
A........

알고리즘 분류
● 구현
 문자열

소스코드
package Lv1_Bronze;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
/**
 * @author HanHoon
 * @category 구현, 문자열
 * https://www.acmicpc.net/problem/2804
 */
public class BOJ_B2_2804_크로스워드_만들기 {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder str = new StringBuilder();
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");

		char[] A = st.nextToken().toCharArray();
		char[] B = st.nextToken().toCharArray();
		
		int idx_A = -1;
		int idx_B = -1;
		for (int i = 0; i < A.length; i++) {
			for (int j = 0; j < B.length; j++) {
				if(A[i] == B[j]) {
					idx_A = i;
					idx_B = j;
					break;
				}
			}
			if(idx_A != -1 || idx_B != -1)
				break;
		}
		for (int i = 0; i < B.length; i++) {
			for (int j = 0; j < A.length; j++) {
				// 크로스값 출력
				if(idx_A == j && idx_B == i)
					str.append(A[j]);	// == B[i]
				// A 가로로 출력
				else if(idx_B == i)
					str.append(A[j]);
				// B 세로로 출력
				else if(idx_A == j)
					str.append(B[i]);
				// 나머지는 점으로 출력
				else
					str.append(".");
			}
			str.append("\n");
		}

		System.out.println(str.toString());
		br.close();
	}
}

 


BaekJoon List
 

BaekJoon List

BOJ Start!! ● [BOJ] 백준 회원가입, 시작하는 법 ● [BOJ] 등급(티어) 및 Solved.AC 적용 ● [BOJ/JAVA] 백준 소스코드 제출 시 유의사항(자바) Bronze ● Bronze V  - ● Bronze IV  - ● Bronze III  -..

han-hoon.tistory.com


  

기회는 준비된 자에게 찾아온다.

 


 

반응형
LIST

댓글