https://www.acmicpc.net/problem/2804
Problem
- 창영이는 크로스워드 퍼즐을 만들려고 한다.
조건
- 두 단어 A와 B가 주어진다. A는 가로로 놓여야 하고, B는 세로로 놓여야 한다. 또, 두 단어는 서로 교차해야 한다. (정확히 한 글자를 공유해야 한다) 공유하는 글자는 A와 B에 동시에 포함되어 있는 글자여야 하고, 그런 글자가 여럿인 경우 A에서 제일 먼저 등장하는 글자를 선택한다.
- 마찬가지로 이 글자가 B에서도 여러 번 등장하면 B에서 제일 처음 나오는 것을 선택한다. 예를 들어, A = "ABBA"이고, B = "CCBB"라면, 아래와 같이 만들 수 있다.
SOL
문자열 처리를 묻는 문제이다. 문자열을 다룰때는 언어마다 특성이 다르니까, 고려해서 구현을 해야한다.
파이썬 같은 경우, 문자열은 수정이 불가능한 객체로 인식이 된다.(immutable한 객체)
하지만, 이 문제는 row,col을 잘 정해서 크로스 워드에 어떻게 출력을 해줄지가 더 관건인 문제이다.
- row = B에 있는 겹치는 글자의 index
- col = A에 있는 겹치는 글자의 index
- 출력 부분에서, 비어있는 부분은 "."로 출력해주고, 기본적으로 한줄씩 출력하므로, "."*col +B[i]+"."*(len(A)-col-1)을 해주면 , 조건에 맞게 출력이 된다.
# word 1 = row
# word 2 = col
word1,word2=map(str,input().split())
for i in range(len(word1)):
if word1[i] in word2:
col = i
row = word2.index(word1[i])
break
for i in range(len(word2)):
if i==row:
print(word1)
else:
print("."*col+word2[i]+"."*(len(word1)-1-col))
'알고리즘 문제(SOL)' 카테고리의 다른 글
[백준/1256/파이썬] 사전 (0) | 2022.01.29 |
---|---|
[백준/17141/파이썬] 연구소 2 (0) | 2022.01.29 |
[백준/2163/파이썬] 초콜릿 자르기 (0) | 2022.01.28 |
[백준/14502/파이썬] 연구소 (0) | 2022.01.28 |
[백준/2920/파이썬] 음계 (0) | 2022.01.27 |