민균이의 비밀번호_9933

박상민·2023년 11월 6일
0

백준

목록 보기
13/36
post-thumbnail

문제

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

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

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

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

입력

첫째 줄에 단어의 수 N (2 ≤ N ≤ 100)이 주어진다. 다음 N개 줄에는 파일에 적혀있는 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 소문자로만 이루어져 있으며, 길이는 2보다 크고 14보다 작은 홀수이다.

출력

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

예제 1

입력

4
las
god
psala
sal

출력

3 a

예제 2

입력

4
kisik
ptq
tttrp
tulipan

출력

5 s

문제풀이

문제이해

이 문제를 한마디로 요약하자면 "palindrome인 문자열을 골라내서 그 문자열의 길이와 가 운데 문자를 뽑아내는 문제" 라고 할 수 있다.

풀이순서

  1. 단어의 개수와 단어를 입력값 input처리
  2. 단어를 역순으로 바꿔 원래 단어와 비교하며 같으면 팰린드롬, 아니면 아무것도 아닌 것
  3. 팰린드롬일 때 length, 가운데 문자 뽑아내기

정답코드

import sys

N = int(sys.stdin.readline())
words = []

for _ in range(N):
 	#sys.stdin.readline()을 사용하여 입력을 읽으면 
	#사용자가 enter을 칠 때 개행 문자('\n')가 입력되므로 .strip()를 사용해 제거해줌
    word = sys.stdin.readline().strip()
    words.append(word)

for word in words:
    if word[::-1] in words:
        pw_length = len(word)
        pw_center = word[pw_length//2]
        break

print(pw_length,pw_center)
profile
I want to become a UX Developer

0개의 댓글