문제:

 창영이는 민균이의 컴퓨터를 해킹해 텍스트 파일 하나를 자신의 메일로 전송했다. 파일에는 단어가 한 줄에 하나씩 적혀있었고, 이 중 하나는 민균이가 온라인 저지에서 사용하는 비밀번호이다.

 

파일을 살펴보던 창영이는 모든 단어의 길이가 홀수라는 사실을 알아내었다. 그리고 언젠가 민균이가 이 목록에 대해서 얘기했던 것을 생각해냈다. 민균이의 비밀번호는 목록에 포함되어 있으며, 비밀번호를 뒤집어서 쓴 문자열도 포함되어 있다.

 

예를 들어, 민균이의 비밀번호가 "tulipan"인 경우에 목록에는 "napilut"도 존재해야 한다. 알 수 없는 이유에 의해 모두 비밀번호로 사용 가능하다고 한다.

 

민균이의 파일에 적혀있는 단어가 모두 주어졌을 때, 비밀번호의 길이와 가운데 글자를 출력하는 프로그램을 작성하시오.

 

입력:

첫째 줄에 단어의 수 N(2<=N<=100)이 주어진다. 다음 N개의 줄에는 파일에 적혀있는 단어가 한 줄에 하나씩 주어진다.

단어는 알파벳 소문자로만 이루어져 있으며, 길이는 2보다 크고 14보다 작은 홀수이다.

 

출력:

첫째 줄에 비밀번호의 길이와 가운데 글자를 출력한다. 항상 답이 유일한 경우만 입력으로 주어진다.

 

풀이방법:

 처음 단어를 받을때 원래 단어와 뒤집은 단어 두개씩 넣도록 하였다. 이렇게 한다면 비밀번호인 단어는 words라는 배열에 두 개씩 담기게 될 것이다.

 그리고 이 words라는 배열에 set을 취하게 되면 중복인 것들이 사라지게 되고, words에 set을 한번 한 배열을 빼면 비밀번호인 문자만 남게 될 것이다. 항상 홀수 길이의 단어이므로 둘 중 어느것의 가운데 글자를 출력해도 상관없으니 아무 것이나 선택해서 출력하도록 했다.

1
2
3
4
5
6
7
8
9
10
words=[]
for i in range(int(input())):
    word=input()
    ReWord=word[::-1]
    words.append(word)
    words.append(ReWord)
 
for word in list(set(words)):
    words.remove(word)
print(len(words[0]),words[0][len(words[0])//2])
cs

문제링크:

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

'Algorithm > Python' 카테고리의 다른 글

[BOJ]14501. 퇴사  (0) 2019.09.11
[BOJ]1371. 가장 많은 글자  (0) 2019.09.10
[BOJ]2178. 미로찾기  (0) 2019.09.08
[BOJ]2667. 단지번호붙이기  (0) 2019.09.07
[BOJ]2331. 반복 수열  (6) 2019.09.06

+ Recent posts