민균이의 비밀번호
문제
창영이는 민균이의 컴퓨터를 해킹해 텍스트 파일 하나를 자신의 메일로 전송했다. 파일에는 단어가 한 줄에 하나씩 적혀있었고, 이 중 하나는 민균이가 온라인 저지에서 사용하는 비밀번호이다.
파일을 살펴보던 창영이는 모든 단어의 길이가 홀수라는 사실을 알아내었다. 그리고 언젠가 민균이가 이 목록에 대해서 얘기했던 것을 생각해냈다. 민균이의 비밀번호는 목록에 포함되어 있으며, 비밀번호를 뒤집어서 쓴 문자열도 포함되어 있다.
예를 들어, 민균이의 비밀번호가 "tulipan"인 경우에 목록에는 "napilut"도 존재해야 한다. 알 수 없는 이유에 의해 모두 비밀번호로 사용 가능하다고 한다.
민균이의 파일에 적혀있는 단어가 모두 주어졌을 때, 비밀번호의 길이와 가운데 글자를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 단어의 수 N (2 ≤ N ≤ 100)이 주어진다. 다음 N개 줄에는 파일에 적혀있는 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 소문자로만 이루어져 있으며, 길이는 2보다 크고 14보다 작은 홀수이다.
출력
첫째 줄에 비밀번호의 길이와 가운데 글자를 출력한다. 항상 답이 유일한 경우만 입력으로 주어진다.
예제 입력 1
4
las
god
psala
sal
예제 출력 1
3 a
예제 입력 2
4
kisik
ptq
tttrp
tulipan
예제 출력 2
5 s
정답 코드
# 입력받은 단어의 수를 저장
word_Num = int(input("Enter the number of words: "))
# 입력받은 단어들을 저장할 리스트 초기화
word_list = []
# 입력받은 단어의 수만큼 반복하여 단어를 리스트에 추가
for i in range(word_Num):
a = input(f"Enter word {i+1}: ")
word_list.append(a)
# 리스트의 길이와 루프 제어 변수를 초기화
leng = 0
n = 1
# 루프가 실행되는 동안 계속 반복
while n:
# 새로운 리스트 초기화
new_List = []
# 단어의 끝에서부터 역순으로 문자를 가져와서 new_List에 추가
# (word_list의 길이를 초과하지 않도록 반복)
for i in range(-1, -1 - len(word_list[leng]), -1):
new_List.append(word_list[leng][i])
# 현재 처리 중인 단어 인덱스를 증가
leng += 1
# new_List의 길이를 저장
new_List_len = len(new_List)
# new_List의 문자를 합쳐서 하나의 문자열로 변환
str = ''.join(new_List)
# word_list의 모든 단어와 역순으로 변환된 단어(str)를 비교
for i in range(len(word_list)):
if str == word_list[i]:
# 단어가 역순으로도 동일한 단어를 찾으면 결과를 출력
print(new_List_len, new_List[new_List_len//2])
# 루프 종료를 위한 변수 설정
n = 0
'백준' 카테고리의 다른 글
2024.7.8 백준(Python) 1934 최소공배수 (0) | 2024.07.08 |
---|---|
2024.7.8 백준(Python) 1874 스택 수열 (0) | 2024.07.07 |
2024.7.5 백준(Python) 2033 반올림 (0) | 2024.07.05 |
2024.7.4 백준(Python) 1145 적어도 대부분의 배수 (0) | 2024.07.04 |
2024.7.4 백준(Python) 1373 2진수 8진수 (0) | 2024.07.04 |