반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
11-07 11:40
관리 메뉴

ImJay

[SW Expert Academy] 19003. 팰린드롬 문제 본문

SW Expert Academy/D3

[SW Expert Academy] 19003. 팰린드롬 문제

ImJay 2023. 11. 18. 17:30
반응형

[SW Expert Academy] 19003. 팰린드롬 문제

 

SW Expert Academy

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

swexpertacademy.com


풀이

# 테스트 케이스의 개수 입력
TC = int(input())

# 각 테스트 케이스에 대해 반복
for t in range(TC):
    # 현재 테스트 케이스의 N과 M 값을 입력받음
    N, M = map(int, input().split())
    
    # 답, 카운트, 회문 여부를 나타내는 플래그를 초기화
    ans = cnt = 0
    p = False
    
    # 회문 여부를 판별할 문자열을 저장할 리스트
    isNot = []
    
    # 회문 여부 판별을 위한 입력 반복문
    for _ in range(N):
        s = input().rstrip()
        
        # 문자열이 회문이 아닌 경우 리스트에 추가
        if s != s[::-1]:
            isNot.append(s)
        else:
            # 회문인 경우 플래그를 True로 설정
            p = True
    
    # 회문이 아닌 문자열들 중에서 회문을 형성할 수 있는 쌍을 찾아 카운트
    for _ in range(len(isNot)):
        tmp = isNot.pop()
        if tmp[::-1] in isNot:
            cnt += 2

    # 최종 답을 계산하여 출력
    ans = cnt * M

    # 적어도 하나의 회문이 존재하는 경우 M을 더함
    if p:
        ans += M
    
    # 현재 테스트 케이스의 결과를 출력
    print(f'#{t+1} {ans}')

 

참고자료

 

[SWEA] 19003. 펠린드롬 문제(D3)

첨에 문제 제대로 안 읽고 풀다가 '이렇게 쉬운 문제라고..?' 해서 다시 푼 문제입니당. 다시 풀어도 좀 쉽긴 했어요. 조건을 몇 개 생각해보니 바로 풀릴 것 같아 작성했습니다. 조건은.. 문자열

seongddiyong.tistory.com

반응형
Comments