728x90
반응형
문제 바로가기
문제:
크로스워드 퍼즐은 R*C크기의 직사각형으로 이루어져 있고, 각 칸은 비어있거나 막혀있다. 퍼즐은 가로(왼쪽->오른쪽) 또는 세로(위->아래)로 연속된 빈 칸에 단어를 채우면서 푼다. 동혁이는 크로스워드 퍼즐을 풀지 않는다. 그는 풀려있는 퍼즐을 쳐다본다. 그런 후에, 그는 그 퍼즐에서 사전순으로 제일 앞서는 단어를 찾는다. (단어는 적어도 2글자이다.) 크로스워드 퍼즐이 주어졌을 때, 사전순으로 제일 앞서는 단어를 출력하는 프로그램을 작성하시오.
입력:
첫째 줄에 R과 C (2 ≤ R, C ≤ 20)가 주어진다. R는 행의 개수, C는 열의 개수이다. 그 다음 R개의 줄엔 C개의 문자가 포함되어 있다. 각 문자는 영어 알파벳 소문자 또는 '#'이며, '#'인 경우에는 막혀있는 것이다.
출력:
첫째 줄에 사전순으로 제일 앞서는 단어를 출력한다. 정답이 항상 존재하는 경우만 입력으로 주어진다.
import sys
sys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r')
N, M = map(int,sys.stdin.readline().split(" "))
lst = [input() for i in range(N)]
res = []
for i in range(N):
s = lst[i].split("#")
for j in s:
if len(j) >= 2:
res.append(j)
for i in range(M):
re=''
for j in range(N):
re+=lst[j][i]
b=re.split('#')
for l in b:
if len(l)>=2:
res.append(l)
print(sorted(res)[0])
가로로 쭉 받아오고
세로로 쭉 받아오고
"#" 기준으로 짤라서 2개보다 많으면 추가해준다.
반응형
댓글