본문 바로가기
백준알고리즘/문자열

(Python/🥈2)백준리즘알고 3005번:

by windy7271 2023. 7. 10.
728x90
반응형

 

문제 바로가기

https://www.acmicpc.net/problem/3005
크로스워드 퍼즐 쳐다보기

 

문제:

크로스워드 퍼즐은 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개보다 많으면 추가해준다.

반응형

댓글