창영이는 민균이의 컴퓨터를 해킹해 텍스트 파일 하나를 자신의 메일로 전송했다. 파일에는 단어가 한 줄에 하나씩 적혀있었고, 이 중 하나는 민균이가 온라인 저지에서 사용하는 비밀번호이다.
파일을 살펴보던 창영이는 모든 단어의 길이가 홀수라는 사실을 알아내었다. 그리고 언젠가 민균이가 이 목록에 대해서 얘기했던 것을 생각해냈다. 민균이의 비밀번호는 목록에 포함되어 있으며, 비밀번호를 뒤집어서 쓴 문자열도 포함되어 있다.
예를 들어, 민균이의 비밀번호가 "tulipan"인 경우에 목록에는 "napilut"도 존재해야 한다. 알 수 없는 이유에 의해 모두 비밀번호로 사용 가능하다고 한다.
민균이의 파일에 적혀있는 단어가 모두 주어졌을 때, 비밀번호의 길이와 가운데 글자를 출력하는 프로그램을 작성하시오.
첫째 줄에 단어의 수 N (2 ≤ N ≤ 100)이 주어진다. 다음 N개 줄에는 파일에 적혀있는 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 소문자로만 이루어져 있으며, 길이는 2보다 크고 14보다 작은 홀수이다.
첫째 줄에 비밀번호의 길이와 가운데 글자를 출력한다. 항상 답이 유일한 경우만 입력으로 주어진다.
4
las
god
psala
sal
3 a
4
kisik
ptq
tttrp
tulipan
5 s
# 뒤집어도 존재해야함
# 문자열 길이 / 가운데 글자 출력(홀수)나누기2+1 인덱스
import sys
N = int(sys.stdin.readline())
hacking_text_list = [sys.stdin.readline().strip() for _ in range(N)]
# reversed_hacking_text_list = hacking_text_list[::-1]
# print(hacking_text_list)
# for j in range(len(hacking_text_list)):
# #문자열이 뒤집어도 있어야함
# for k in range(len(hacking_text_list)):
# if hacking_text_list[j] == reversed_hacking_text_list[k]:
# password = hacking_text_list[i]
# password_length = len(hacking_text_list[i])
# password_middle_word = hacking_text_list[password_length//2]
# print(password_length, password_middle_word)
# break
# =============================================
# 뒤집은 수를 구하기 위해 뒤집은 수의 리스트를 만듬 = 불필요한 과정
# 그래서 예제 입력 출력이 잘못된 예시라고 판단함
# for j in range(N):
# password = ''
# for k in range(N):
# if hacking_text_list[j][::-1] == hacking_text_list[k]:
# password = hacking_text_list[k]
# def result():
# password_len = len(password)
# password_middle_word = password[password_len//2]
# print(password_len, password_middle_word)
# return
# result()
# ============================================
# for문을 너무 많이 사용해서 런타임 에러가 뜸
for word in hacking_text_list:
if word[::-1] in hacking_text_list:
password = word
break
password_len = len(password)
password_middle_word = password[password_len//2]
print(password_len, password_middle_word)
import sys
N = int(sys.stdin.readline())
hacking_text_list = [sys.stdin.readline().strip() for _ in range(N)]
일단 입력을 N으로 리스트 개수, hacking_text_list 변수 안에는 실제 한 줄씩 적힌 텍스트 목록을 하나의 리스트 안에 담았다
여기서 strip()을 사용하였기에 양옆 기준 공백이 있으면 다음 요소는 다음 줄에서 가져오는 방식으로 채택하였다.
# reversed_hacking_text_list = hacking_text_list[::-1]
# print(hacking_text_list)
# for j in range(len(hacking_text_list)):
# #문자열이 뒤집어도 있어야함
# for k in range(len(hacking_text_list)):
# if hacking_text_list[j] == reversed_hacking_text_list[k]:
# password = hacking_text_list[i]
# password_length = len(hacking_text_list[i])
# password_middle_word = hacking_text_list[password_length//2]
# print(password_length, password_middle_word)
# break
# =============================================
# 뒤집은 수를 구하기 위해 뒤집은 수의 리스트를 만듬 = 불필요한 과정
# 그래서 예제 입력 출력이 잘못된 예시라고 판단함
# for j in range(N):
# password = ''
# for k in range(N):
# if hacking_text_list[j][::-1] == hacking_text_list[k]:
# password = hacking_text_list[k]
# def result():
# password_len = len(password)
# password_middle_word = password[password_len//2]
# print(password_len, password_middle_word)
# return
# result()
# ============================================
# for문을 너무 많이 사용해서 런타임 에러가 뜸
for word in hacking_text_list:
if word[::-1] in hacking_text_list:
password = word
break
password_len = len(password)
password_middle_word = password[password_len//2]
print(password_len, password_middle_word)