[문제 링크] 👇
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 함수도 따로 정리해야겠다.
'SWEA' 카테고리의 다른 글
[SWEA] 1216. [S/W 문제해결 기본] 3일차 - 회문2 (Python/D3) (0) | 2024.10.25 |
---|---|
[SWEA] 6692. 다솔이의 월급 상자 (Python/D3) (0) | 2024.10.24 |
[SWEA] 2805. 농작물 수확하기 (Python/D3) (0) | 2024.10.24 |
[SWEA] 1215. [S/W 문제해결 기본] 3일차 - 회문1 (Python/D3) (2) | 2024.10.22 |
[SWEA] 10804. 문자열의 거울상 (Python/D3) (1) | 2024.10.22 |