BOJ/Python

백준 2804번 크로스워드 만들기 파이썬

띵지니어 2022. 3. 9. 20:37
반응형

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

 

2804번: 크로스워드 만들기

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

www.acmicpc.net

 

내 답안

A, B = input().split()
N = len(A)
M = len(B)
matrix = [['.'] * N for _ in range(M)]

for i in range(N):
    if A[i] in B:
        row = i
        col = B.index(A[i])
        break
        
for i in range(M):
    matrix[i][row] = B[i]
for i in range(N):
    matrix[col][i] = A[i]
    
for i in matrix:
    print(''.join(i))

 

맨 처음 이중리스트에 입력받은 글자 수 대로 초기화를 해주었다.

matrix = [['.'] * N for _ in range(M)]

 

그 다음

머리속에서 생각한 내용

문자열 A에서 먼저 등장한 알파벳 중 문자열 B에 있는 것을 고르면 연두색 형광펜 쳐진 것처럼 겹치게 된다.

 

그리고 이런 식으로 행(row)과 열(col)을 저장해 준다.

for i in range(N):
    if A[i] in B:
        row = i
        col = B.index(A[i])
        break

 

 

이후 노란색 형광색 친 부분처럼 리스트를 새로 고침 해주었다.

for i in range(M):
    matrix[i][row] = B[i] # row를 모두 B 로 바꾸기
for i in range(N):
    matrix[col][i] = A[i] # col을 모두 A 로 바꾸기

 

 

마지막으로 출력은 join을 이용하여 코드를 짜봤다.

반응형
목차(index)