풀이 5 의 카드가 주어질 때 규칙에 맞게 점수를 출력하는 문제이다. 이 문제의 구현사항은 크게 3가지로 나눌 수 있다. 모든카드의 색깔이 같은지 모든카드의 숫자가 연속되는지 같은숫자 카드의 조합 위 세가지를 구현한 뒤 점수를 계산하여 출력해주면된다. 소스코드 # 카드게임 import sys input = sys.stdin.readline def sameColor(cards): temp = cards[0][0] for c, n in cards[1:]: if c != temp: return False return True def isContinuous(cards): temp = int(cards[0][1]) for c, n in cards[1:]: if int(n) != temp + 1: return False else: temp = int(n) return True def countNumber(cards): if 4 in numbers: return 800 + numbers.index(4) elif 3 in numbers and 2 in numbers: return 700 + numbers.index(3)*10 + numbers.index(2) elif 3 in numbers: return 400 + numbers.index(3) elif numbers.count(2) == 2: for i in range(10): if numbers[i] == 2: lower = i break for i in range(9, -1, -1): if numbers[i] == 2: upper = i break return 300 + upper*10 + lower elif 2 in numbers: return 200 + numbers.index(2) else: return 100 + int(cards[4][1]) cards = sorted([list(input().rstrip().split()) for _ in range(5)], key=lambda x : x[1]) numbers = [0]*10 for c, n in cards: numbers[int(n)] += 1 if sameColor(cards) and isContinuous(cards): ans = 900 + int(cards[4][1]) elif sameColor(cards): ans = 600 + int(cards[4][1]) elif isContinuous(cards): ans = 500 + int(cards[4][1]) else: ans = countNumber(cards) print(ans) References BOJ 2621 - 카드게임