티스토리 뷰

728x90

풀이1

문제 조건에서 S가 1000 이하라고 주어졌기 때문에 for 문의 range를 len(card) // 3 으로 해줘야 한다.

T = int(input())

for tc in range(1, T+1):
    card = input()

    S = [0]*14
    D = [0]*14
    H = [0]*14
    C = [0]*14

    res = True
    for i in range(len(card) // 3):  # 알파벳 인덱스: 0,3,6,9
        if card[i*3] == 'S':
            if S[int(card[i*3+1:i*3+3])] == 1:
                res = False
                break
            S[int(card[i*3+1:i*3+3])] += 1
        elif card[i*3] == 'D':
            if D[int(card[i*3+1:i*3+3])] == 1:
                res = False
                break
            D[int(card[i*3+1:i*3+3])] += 1
        elif card[i*3] == 'H':
            if H[int(card[i*3+1:i*3+3])] == 1:
                res = False
                break
            H[int(card[i*3+1:i*3+3])] += 1
        elif card[i*3] == 'C':
            if C[int(card[i*3+1:i*3+3])] == 1:
                res = False
                break
            C[int(card[i*3+1:i*3+3])] += 1

    if res is True:
        print("#{} {} {} {} {}".format(tc, 13-S.count(1), 13-D.count(1), 13-H.count(1), 13-C.count(1)))
    else:
        print("#{} ERROR".format(tc))

 

 

풀이2

T = int(input())

for tc in range(1, T+1):
    card = input()
    card_set = set()

    S, D, H, C = 13, 13, 13, 13
    for i in range(len(card) // 3):
        card_set.add(card[i*3:i*3+3])
        if card[i*3] == 'S':
            S -= 1
        elif card[i*3] == 'D':
            D -= 1
        elif card[i*3] == 'H':
            H -= 1
        elif card[i*3] == 'C':
            C -= 1

    if len(card_set) != 4:
        print("#{} ERROR".format(tc))
    else:
        print("#{} {} {} {} {}".format(tc, S, D, H, C))
댓글