Stay Hungry Stay Foolish

SWEA

[SWEA] 11856. 반반 (Python/D3)

dev스카이 2024. 10. 24. 14:03

[문제 링크] 👇

 

SW Expert Academy

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

swexpertacademy.com


 

풀이

sol.1 (set 이용)

  • set()
    • set은 중복을 허용하지 않는 자료구조이기 때문에, 문자열에 등장하는 서로 다른 문자의 종류를 쉽게 확인할 수 있다.
    • 예를 들어, 문자열이 'ABAB'일 때 set()를 이용하면 결과는 {'A', 'B'} 가 된다.
  • set의 길이가 2이면 두 개의 서로 다른 문자가 있었다는 것이므로, "Yes" 를 출력한다.
  • 그렇지 않으면 "No"를 출력한다.

 

sol.2 (if문 이용)

  • sorted()
    • sorted()는 파이썬의 내장 함수로 문자열이나 리스트 등을 정렬하는 함수이다.
    • 문자열일 경우 사전 순으로 정렬하고, 리스트 형태로 반환한다.
  • 정렬한 문자열을 조건문을 이용하여 결과를 저장한다.
    • 예를 들어, 정렬한 문자열이 'AABB' 일 때 1, 2 번째 문자 그리고 3, 4번째 문자가 같은지 확인한다.
    • 그러나 1번째와 3번째 문자가 같으면 안 되기 때문에 1, 3번째 문자가 다른지 확인한다.
    • 모두 and로 묶고 위 조건이 모두 true이면 "YES"를 출력한다.
    • 그렇지 않으면 "NO"를 출력한다.

 

 

Solution

sol.1 (set 이용)

test_case = int(input())
for tc in range(1, test_case + 1):
    s = input().strip()
    s_set = set(s)
    if len(s_set) == 2:
        result = "Yes"
    else:
        result = "No"
    print("#%d %s" % (tc, result))

 

 

sol.2 (if문 이용)

test_case = int(input())
for tc in range(1, test_case + 1):
    s = input().strip()
    s_sort = sorted(s)  # 문자열을 알파벳 순으로 정렬
    
    if s_sort[0] == s_sort[1] and s_sort[2] == s_sort[3] and s_sort[0] != s_sort[2]:
        result = "Yes"
    else:
        result = "No"

    print(f"#{tc} {result}")

 

 

👩‍💻 회고

나는 if문만 활용해서 문제를 풀었는데, set()로 이용하는 방법도 있다는 걸 알았다. set를 활용하는 게 더 깔끔한 것 같다. set 함수도 따로 정리해야겠다.