728x90

문제

재현이는 알파벳 소문자로 이루어진 문자열 하나를 받아 그대로 두 번 연달아 썼다. 예를 들어 “abc” 를 받았다면 “abcabc” 를 썼다.

당신에게 문자열이 주어질 때, 이 문자열이 재현이가 만들어 낼 수 있는 문자열인지 판단하라.

 

입력

첫 번째 줄에 테스트 케이스의 수 TC가 주어진다. 이후 TC개의 테스트 케이스가 새 줄로 구분되어 주어진다. 각 테스트 케이스는 다음과 같이 구성되었다.

      - 첫 번째 줄에 문자열의 길이  N이 주어진다. (1≤N≤100)
      - 다음 줄에 길이 N의 알파벳 소문자 문자열 S가 주어진다.

 

출력

각 테스트 케이스 마다 한 줄씩, 재현이가 만드는 게 가능한 문자열이라면 “Yes”, 불가능한 문자열이라면 “No” 를 출력하라.

 

예제

[입력] [출력]
3
6
abcabc
2
ab
1
z
#1 Yes
#2 No
#3 No

 

문제 해결 방법

  • 입력 받은 문자열(@word@)이 절반으로 나눈 문자로 만들어질 수 있으면 @Yes@를, 그렇지 않으면 @No@를 출력시키는 문제이다.
  • 문자열의 길이(@length_of_word@)가 홀수이면 무조건 @No@를 출력시키고, 짝수이면 입력 받은 문자열(@word@)이 해당 문자열을 절반으로 나눈 문자(@half_of_word@)로 만들어질 수 있는지 여부를 확인한 후 @Yes@ 또는 @No@를 출력한다.
length_of_word = int(input())
word = input()

# 정답 출력
if length_of_word % 2 != 0:    # 문자열 길이가 홀수이면 No
    answer = "No"
else:   # 문자열의 길이가 짝수이면
    half_of_word = word[:int(length_of_word / 2)]   # 입력 받은 문자열을 절반으로 나눈 문자

    answer = "Yes" if word == half_of_word * 2 else "No"

print(f"#{test_case} {answer}")

 

코드

T = int(input())

for test_case in range(1, 1 + T):
    length_of_word = int(input())
    word = input()

    # 정답 출력
    if length_of_word % 2 != 0:    # 문자열 길이가 홀수이면 No
        answer = "No"
    else:   # 문자열의 길이가 짝수이면
        half_of_word = word[:int(length_of_word / 2)]   # 입력 받은 문자열을 절반으로 나눈 문자

        answer = "Yes" if word == half_of_word * 2 else "No"

    print(f"#{test_case} {answer}")

 

참고

  • 난이도: D3
728x90