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


문제

 

주어진 단어들을 앞뒤로 연결할 수 있는 모든 경우의 수를 확인하는 문제이다.

 


풀이

 

주어진 단어들을 나열하고, 앞과 뒤를 잘라가면서 비교하고, 같을 때 카운트하면 된다.

단 두 단어를 비교하면서 앞과 뒤를 비교해도, 뒤와 앞을 비교해도 일치할 때 2 개로 세는 것이 아니라 1 개로 센다.

간단하게 이중 for 문과 슬라이싱을 사용해서 앞과 뒤를 자르고 비교하면 된다.

 


코드

 

test = int(input())
word = []
cnt = 0
for i in range(test):
    word.append(input())
for i in range(test):
    for j in range(i, test):
        if i == j:
            continue
        word_len = len(word[i]) if len(word[i]) <= len(word[j]) else len(word[j])
        for n in range(1, word_len+1):
            if word[i][:n] == word[j][-1*n:]:
                cnt += 1
                break
            elif word[j][:n] == word[i][-1*n:]:
                cnt += 1
                break
print(cnt)

 

애스터로이드