본문 바로가기
Algorithm Problem Solving/BaekJoon

[BaekJoon] 백준 9933 민균이의 비밀번호 (Python / 파이썬)

by ʚ⇜❅🎕̈❄⇝ɞ 2021. 8. 20.
728x90
반응형

BaekJoon 백준 9933 민균이의 비밀번호 문제는 민균이의 비밀번호는 목록에 포함되어 있으며, 비밀번호를 뒤집어서 쓴 문자열도 포함되어 있다. 민균이의 파일에 적혀있는 단어가 모두 주어졌을 때, 비밀번호의 길이와 가운데 글자를 찾문제이다. 난이도는 Bronze 1이다.

 

BaekJoon 9933 민균이의 비밀번호 문제 정보

출처

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

알고리즘 분류

- 문자열, 구현

난이도

- 브론즈 1 / Bronze 1

 

민균이의 비밀번호 문제 요약

  • 민균이의 파일에는 N개의 단어가 한 줄에 하나씩 적혀있었고, 이 중 하나는 민균이가 온라인 저지에서 사용하는 비밀번호이다. (2 ≤ N ≤ 100)
  • 단어는 알파벳 소문자로만 이루어져 있으며, 길이는 2보다 크고 14보다 작은 홀수이다.
  • 모든 단어의 길이가 홀수이고, 민균이의 비밀번호는 목록에 포함되어 있으며, 비밀번호를 뒤집어서 쓴 문자열도 포함되어 있다.
  • 예를 들어, 민균이의 비밀번호가 "tulipan"인 경우에 목록에는 "napilut"도 존재해야 한다. 알 수 없는 이유에 의해 모두 비밀번호로 사용 가능하다고 한다.
  • 항상 답이 유일한 경우만 입력으로 주어진다.
  • 민균이의 파일에 적혀있는 단어가 모두 주어졌을 때, 비밀번호의 길이와 가운데 글자를 구하여 출력한다.

 

문제 풀이 과정

  1. 단어들 중 한 단어가 회문인 경우가 있나 회문 검사를 한다.
  2. 회문이면 그 단어가 비밀번호이므로, 비밀번호의 길이와 가운데 글자를 출력한다.
  3. 회문인 단어가 없으면 서로가 뒤집어진 두 단어를 찾는다.
  4. 한 단어가 다른 단어의 뒤집은 문자열과 같다면 그 단어가 비밀번호이다.
  5. 비밀번호의 길이와 가운데 글자를 출력한다.

회문 활용 예제 >

[Python] SW Expert Academy - 4861. 회문

 

[Python] SW Expert Academy - 4861. 회문

SW Expert Academy 4861번 회문 문제는 NxN 크기의 글자판에서 길이가 M인 회문을 가로 또는 세로 방향으로 찾아 출력하는 문제이다. 회문이란 어느 방향에서 읽어도 같은 문자열이다. 문자열을 저장하

wondytyahng.tistory.com

 

코드 및 설명
  • 22번 줄 - [::-1] → 처음부터 끝까지 역순으로 1칸 간격으로 ( - → 역순으로)
N = int(input())
list = []
fin = 0
for _ in range(N):
    list.append(input())

# 한 단어 내의 회문 검사
for l in list:
    lLen = len(l)
    for i in range(lLen // 2):
        if l[i] == l[lLen - 1 - i]:
            if i == lLen // 2 - 1:
                print(f'{lLen} {l[i + 1]}')
                fin = 1
        else:
            break

# 두 단어 비교
if not fin:
    for i in range(len(list)):
        for j in range(i + 1, len(list)):
            if list[i] == list[j][::-1]:
                print(f'{len(list[i])} {list[i][len(list[i]) // 2]}')

BaekJoon 백준 9933 민균이의 비밀번호 문제를 파이썬 python으로 풀어보았다. 회문 검색 알고리즘을 활용했다. 난이도는 Bronze 브론즈 1이다. 

728x90
반응형

댓글