티스토리 뷰
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
1. 접근 방식
- 겹치는 카드가 존재하는지 확인하기 위해 집합을 사용하자.
카드에 대한 정보 s를 문자열로 받고나면, 이것을 3개씩 끊어 [ 'S01', 'D02' ... ]처럼 리스트로 담을 것이다. 그리고 이것을 집합으로 만들어 리스트와 집합의 길이가 서로 다르면, 리스트 내에 중복 요소가 존재한다는 것이므로 ERROR를 출력한다.
- 무늬별 카드 개수는 딕셔너리를 사용하자.
기본적으로 모든 카드가 필요하다는 전제로 초기 딕셔너리의 모든 value는 13으로 설정한다. 이후 s를 3개씩 끊은 리스트를 순회하면서 각 무늬의 value 값을 -1한다. 단, 출력 순서는 S D H C 순서대로 해야 하므로, 딕셔너리의 순서가 유지되어야 한다. 따라서 OrderedDict을 사용해야겠다고 생각했다.
2. 정답 코드
from collections import OrderedDict
T = int(input())
for test_case in range(1, T + 1):
s = input()
cards = [ s[x:x+3] for x in range(0, len(s), 3) ]
if len(set(cards)) != len(cards):
print(f'#{test_case} ERROR')
else:
counts = OrderedDict({ 'S': 13, 'D': 13, 'H': 13, 'C':13 })
for card in cards:
counts[card[0]] -= 1
print(f'#{test_case}', end=' ')
for t in counts.values():
print(t, end=' ')
print()
728x90
'코딩 테스트 > SW Expert Academy' 카테고리의 다른 글
[SWEA: SW Expert Academy] 9280. 진용이네 주차타워 파이썬 정답 코드 (2) | 2023.05.20 |
---|---|
[SW Expert Academy] 3131. 100만 이하의 모든 소수 파이썬 정답 코드 (0) | 2023.05.16 |
[SW Expert Academy] 4299. 태혁이의 사랑은 타이밍 파이썬 정답 코드 (0) | 2023.05.16 |
[SW Expert Academy] 1221. [S/W 문제해결 기본] 5일차 - GNS 파이썬 정답 코드 (0) | 2023.05.14 |
[SW Expert Academy] 6692. 다솔이의 월급 상자 파이썬 정답 코드 (0) | 2023.05.14 |