본문 바로가기
Problem Solving/BOJ

[BOJ][Python]28432 풀이

by NoiB 2023. 8. 7.
반응형

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

 

28432번: 끝말잇기

첫 줄에 끝말잇기 기록의 길이 $N$ 이 주어집니다. $(1 \le N \le 100)$ 둘째 줄부터 다음 $N$개의 줄에는 끝말잇기의 기록 $S_1, \cdots, S_N$이 한 줄에 하나씩 주어집니다. 여기서, 하나의 $S_i$는 “?” 로

www.acmicpc.net

import sys
ssr = sys.stdin.readline

n = int(ssr())
s = []
loc = 0 
for i in range(n):
    word = ssr().rstrip()
    s.append(word)
    if word == '?':
        loc = i
m = int(ssr())
first, last = '', ''
a = ''
if n == 1:
    print(ssr().rstrip())
else:
    for _ in range(m):
        nomi = ssr().rstrip()
        if not nomi in s:
            if loc == 0:
                last = s[loc+1][0]
                if nomi[-1] == last:
                    a = nomi
            elif loc == n-1:
                first = s[loc-1][-1]
                if nomi[0] == first:
                    a = nomi
            else:
                first = s[loc-1][-1]
                last = s[loc+1][0]
                if nomi[0] == first and nomi[-1] == last:
                    a = nomi
    print(a)

코드를 최적화하진 않아서 조금 지저분합니다. 개인적으로 이렇게 조건문을 덕지덕지 쓰는 걸 별로 좋아하지 않는데 다음에 시간이 나면 고쳐보겠습니다.

 

이 문제는 어제 있었던 아레나에서 나왔던 문제인데 런타임 에러가 나서 못풀었다가 아침에 문득 입력이 아예 앞 뒤 단어 없이 ? 하나만 들어올 때가 있을 거라는 생각이 불현듯 나서 급하게 풀어봤습니다. ?가 처음이나 마지막에 올거란 생각은 했었으면서 이거 하나만 올거란 생각은 못했는지 스스로한테 짜증이 나네요. 그만큼 제한 시간이 있는 환경이 이성적인 판단을 흐리게 한다는 뜻이기도 하겠지만요.

반응형

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ][Python]2206 풀이  (0) 2023.08.09
[BOJ][Python]1918 풀이  (0) 2023.08.08
[BOJ][Python]1738 풀이  (0) 2023.08.07
[BOJ][Python]1865 풀이  (0) 2023.08.06