코딩테스트/SWExpertAcademy

세상의 모든 펠린드롬 Python(SW Expert Academy)

멍토 2020. 3. 25.

난이도 : D3

문제번호 : 4522

※ 저의 풀이가 무조건적인 정답은 아닙니다.

다른 코드가 좀더 효율적이고 좋을 수 있습니다.

다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.

문제 주소 및 출처입니다.

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWO6Oao6N4QDFAWw&categoryId=AWO6Oao6N4QDFAWw&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


목차

1. 문제 설명

2. 문제 해석

3. 소스 코드


1. 문제 설명

어떤 단어가 뒤에서 앞으로 거꾸로 썼을 때 원래의 단어와 같으면 이를 팰린드롬이라고 한다.

예를 들어 “madam”은 뒤에서 앞으로 읽어도 “madam”이기 때문에 팰린드롬이다.

그러나 “dog”는 뒤에서 앞으로 읽으면 “god”이기 때문에 팰린드롬이 아니다.

“doggod”은 뒤에서 앞으로 읽으면 “doggod”이므로 팰린드롬이다.

25XX년 경근이는 알파벳 소문자로 만든 단어들 중에서 팰린드롬인 것들을 모두 모아(그 단어에 뜻이 있건 없건) 데이터베이스에 넣었다.

요즘은 저장 장치가 발달해서 매우 많은 팰린드롬을 저장할 수 있기 때문에 모든 팰린드롬을 저장하지는 못할 것이라는 걱정은 하지 않아도 좋다.

경근이는 이 데이터베이스에서 특정한 패턴에 매치되는 팰린드롬을 찾으려고 한다.

경근이는 알파벳 소문자와 ‘?’를 사용한 패턴과 매치되는 단어를 찾는 명령을 내릴 수 있는데, ‘?’는 임의의 문자로 대체될 수 있는 와일드 카드이다.

예를 들어 경근이가 “a??a”에 매치되는 단어를 찾으라는 명령을 내리면, “assa”, “appa”등의 팰린드롬을 찾아 줄 것이다.

“asia”는 이런 패턴에 매치되기는 하지만 팰린드롬이 아니기 때문에 찾아주지 않을 것이고, “aa”, “aab”, “ana”, “aaaaa”는 패턴에 매치되지 않기 때문에 찾아주지 않을 것이다.

주어진 패턴과 매치되는 단어가 하나라도 있는지 아닌지 출력하는 프로그램을 작성하라.

입력

각 테스트 케이스마다 주어진 패턴과 매칭되는 팰린드롬이 하나라도 존재하면 “Exist”를 아니라면 “Not exist”를 출력한다.

출력

각 테스트케이스 별로 순서대로 한 줄씩 답을 출력하는데, 문자열 S를 보고 지금 무늬 별로(S, D, H, C 순서로) 몇 장의 카드가 부족한지 출력하여라.

이미 겹치는 카드가 있다면 문자열 “ERROR” (쌍따옴표는 출력하지 않는다)를 출력한다

예시

입력 출력

2
hi
a??a

#1 Not exist
#2 Exist

2. 문제풀이

회문검사 문제였다.

특별한 점은 '?'라는 규칙이 추가되어 어떤글자가 나와도 그와 같은 글자로 대치되는 글자이다.

따라서 반복문을 검사할때 양쪽의 글자가 같거나 ?라면 넘어가고

글자가 다르면서 양쪽 글자중 ?가 하나라도 없다면 Not exist를 출력한다.


3. 소스코드

1
2
3
4
5
6
7
8
9
10
11
#D3 4522 세상의 모든 팰린드롬
 
for t in range(1int(input()) + 1):
    string = input()
    answer = 'Exist'
    length = len(string)
    for i in range(length//2):
        if string[i] != string[length - 1 - i ] and string[i] != '?' and string[length - 1 - i ] !='?':
            answer = 'Not exist'
            break
    print('#{} {}'.format(t, answer))

댓글

💲 광고입니다.