Tiny Bunny
본문 바로가기
Algorithm/Python

[BOJ #2804] 크로스워드 만들기

by nowag 2024. 2. 20.

문제

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

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

 

내가 쓴 코드

from sys import stdin; input = stdin.readline
a, b = input().split()

for i in a:
    if i in b:
        a_idx = a.index(i)  # 1
        b_idx = b.index(i)  # 4
        break

lst = [['.'] * len(a) for _ in range(len(b))]
for i in range(len(b)):
    if i == b_idx:
        lst[i] = a
    for j in range(len(a)):
        if lst[i][j] == '.' and j == a_idx:
            lst[i][j] = b[i]

for i in range(len(b)):
    for j in range(len(a)):
        print(lst[i][j], end='')
    print()

이중for문일때 안쪽 for문 안에 있는 조건문 만족 시 두 개의 for문을 모두 break 시키는 방법 아는 사람? 이 있으시나요.. 와 근데 이 문제는 구글링 해보면 각자 코드가 진짜 천차만별이다.. 어렵다... 세상 사람들 참 똑똑하다^^*

 

출력 결과

 

제출 결과

728x90
반응형

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

[BOJ #2309] 일곱 난쟁이  (0) 2024.02.21
[BOJ #1966] 프린터 큐  (0) 2024.02.21
[SWEA #12915] 이진탐색  (0) 2024.02.20
[BOJ #11721] 열 개씩 끊어 출력하기  (0) 2024.02.20
[SWEA #1231] 중위순회  (1) 2024.02.20