본문 바로가기

스터디 1일 1커밋

240220 [BOJ/백준] 2804. 크로스워드 만들기

 

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

 

2804번: 크로스워드 만들기

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

www.acmicpc.net


나의 코드

A, B = input().split()

for i in A:
    if i in B:
        result = (A.index(i), B.index(i))
        break


arr = [['.'] * len(A) for _ in range(len(B))]

for i in range(len(A)):
    arr[result[1]][i] = A[i]
for j in range(len(B)):
    arr[j][result[0]] = B[j]

for k in arr:
    print(''.join(k))

 

결과


set으로 중복제거 후에 index를 쓰면 찾는 문자의 인덱스를 찾을 수 있을 것 같다고 생각했다. 근데 중복된 문자가 두 개 이상일 경우 set은 순서가 없어서 섞이게 되고 제일 먼저 나오는 문자를 찾을 수 없을 수도 있다. 그리고 for이 두 개일 때는 break를 써도 밖의 for은 빠져나올 수 없기 때문에 for 두 개를 써야 할 때는 for과 if를 쓸 수 있도록 해야 한다.