ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [D3] SWEA 17319. 문자열문자열
    SWEA 2024. 4. 27. 23:26

    1. 접근 방식

    어떠한 문자열을 2번 붙여서

    특정한 문자열을 만들어낼 수 있는지 물어보는 문제다.

    ex)abc -> abcabc 

     

    만드고 싶은 문자열의 길이가 1일때

    ->불가능하다.

     

    2일때

    ->가능하다.

    ex) aa bb cc

     

    3일때

    ->불가능하다.

     

    4일때

    ->가능하다.

    ex)abab aaaa bcbc

     

    1)만들고 싶은 문자열의 길이가 홀수일 때 불가능

    2)만들고 싶은 문자열의 길이가 짝수일 때 가능

     

    2. 디테일한 구현

    문자열의 길이가 짝수이고

    딱 절반으로 짤랐을 때!

    동일하면 된다.

    [0:len(s)//2]와 [len(s)//2:]가 

    동일한 지 비교하면 된다.

     

    3. 코드 구현

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    if __name__=='__main__':
       # sys.stdin=open('input2.txt','r')   
        
        
        t=int(input()) ## 총 테스트 케이스 개수
        
        for tc in range(t):
            n=int(input()) ##문자열의 길이
            s=input() ##문자열
     
            if len(s)%2!=0##홀수면
                print(f'#{tc+1} No')
            else##짝수면
                if s[0:len(s)//2]!=s[len(s)//2:]:
                   
                    print(f'#{tc+1} No')
                else:
                    print(f'#{tc+1} Yes')
    cs

     

     

     

    4. 깨달은 점 및 반성

    역시 길이가 1부터 2,3,4, ~~ n까지

    차근차근 살펴보면 된다는 것을 깨달았다.

    그냥 문제 보고 멍하니 째려보지 말자.

    일단 손으로 조건을 1부터 나열해보자

Designed by Tistory.