[SWEA] 19003. 팰린드롬 문제

이민선(Jasmine)·2024년 6월 27일
0

https://swexpertacademy.com/main/solvingProblem/solvingProblem.do

어렵게 생각했고.. 어려웠지만.. 어려웠던 문제..
난 머리가 안 좋아서 열심히 해야겠다 ^^,,,ㅎㅎ

이 문제는 조건에 따른 규칙을 잘 생각해내는 게 중요한 문제였다.
1. 팰린드롬 그 잡채인 문자열은 가장 긴 팰린드롬에 하나 밖에 들어가지 못한다. 주어진 모든 문자열은 다르기 때문이다. 따라서 palindrome_itself라는 boolean 변수만 만들어주었다. palindrome_itself가 True이면 마지막에 m만 길이에 추가해주면 된다.
2. 팰린드롬 쌍이 없는 문자열은 갖다 버리면 된다. 팰린드롬 쌍이 있는 것들만 palindrome_pairs 배열에 저장해두었다. (다시 보니 배열을 만들 필요까지도 없고 길이만 저장하면 되겠군)

나의 풀이

T = int(input())
for test_case in range(1, T + 1):
    print('#%s'%test_case, end=' ')
    n, m = map(int, input().split())
    words = [input() for _ in range(n)]
    
    # 검색 시간을 O(1)으로 만들기 위해 set을 사용
    s = set(words)
    palindrome_itself = False
    palindrome_pairs = []
    for word in words:
    	# 팰린드롬 문자열인지 판별. 팰린드롬 문자열이 있으면 마지막에 m을 더해주기만 하면 된다.
        if word == word[::-1]:
            palindrome_itself = True
        elif word[::-1] in s:
        	# 이 부분은 굳이 배열로 만들었어야 했나..? 길이만 저장해도 충분하다.
            palindrome_pairs.append(word)
    answer = len(''.join(palindrome_pairs))
    print(answer + m if palindrome_itself else answer)

(썸네일에서 스포한) 뜬금 근황

SSAFY에 합격하게 되었다!
앞으로 계속해서 부족한 부분을 채워나가야겠다.
나란 사람 알고리즘 풀 때 뇌 굴러가는 속도가 거북이 같지만 붙여주신만큼 열심히 해야겠다 ㅎㅎ...!!!
SWEA 열심히 풀자!!!!

profile
기록에 진심인 개발자 🌿

0개의 댓글