문제설명
A와 B가 카드 게임을 할 때, 누가 더 많은 점수를 획득했는지, 또 획득한 점수는 몇 점인지 알아보려고 합니다. 게임 규칙은 다음과 같습니다.
* 알파벳 a, b, c, d, e가 적힌 카드뭉치가 있습니다.
* A와 B가 서로 번갈아 가면서 n장씩 카드를 뽑습니다.
* 소유한 카드 점수를 합산합니다. 알파벳 카드 한 장당 a = 1점, b = 2점, c = 3점, d = 4점, e = 5점으로 점수를 계산합니다.
* 점수가 높은 사람이 승리합니다.
게임에서 이긴 사람과 획득 점수를 구하기 위해 다음과 같이 프로그램 구조를 작성했습니다.
```
1. A와 B가 번갈아가며 가져간 카드를 각각 리스트에 넣습니다.
2. A와 B가 각각 획득한 점수를 구합니다.
3. 획득한 점수가 큰 사람과 획득한 점수를 순서대로 리스트에 담아 return 합니다.
```
뽑아야 하는 카드 개수 n과 카드를 나타내는 문자열 bundle이 매개변수로 주어질 때, 이긴 사람과 점수를 return 하도록 solution 함수를 작성하려 합니다. 위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.
매개변수 설명
뽑아야 하는 카드 개수 n과 카드를 나타내는 문자열 bundle이 solution함수의 매개변수로 주어집니다.
* n은 1 이상 25 이하인 자연수입니다.
* bundle은 모두 알파벳 소문자입니다.
* bundle의 길이는 2이상 2*n이하입니다.
return 값 설명
이긴 사람과 획득한 점수를 return합니다.
A가 이겼을 경우에는 1, B가 이겼을 경우에는 2, 무승부일 경우에는 0을 return 해주세요.
예시
| n | bundle | return |
|---|---|---|
| 4 | "cacdbdedccbb" | [0, 13] |
예시설명
A는 c, c, b, e 카드를 뽑았고 B는 a, d, d, d 카드를 뽑았습니다. A가 획득한 점수는 13점이고 B가 획득한 점수는 13점입니다. 둘다 13점을 획득하여 게임은 무승부로 끝납니다.
문제 코드
def func_a(bundle, start):
return bundle[start::2]
def func_b(score1, score2):
if score1 > score2:
return [1, score1]
elif score2 > score1:
return [2, score2]
else:
return [0, score1]
def func_c(bundle):
answer = 0
score_per_cards = {
'a': 1,
'b': 2,
'c': 3,
'd': 4,
'e': 5
}
for card in bundle:
answer += score_per_cards[card]
return answer
def solution(n, bundle):
a_cards = func_a(@@@, @@@)[:n]
b_cards = func_a(@@@, @@@)[:n]
a_score = func_c(@@@)
b_score = func_c(@@@)
return func_b(@@@, @@@)
풀이
# bundle에서 두 칸 간격으로 카드 뽑기
def func_a(bundle, start):
return bundle[start::2]
# 이긴 사람과 획득한 점수 return
def func_b(score1, score2):
if score1 > score2:
return [1, score1]
elif score2 > score1:
return [2, score2]
else:
return [0, score1]
# 보유한 카드의 점수 구하기
def func_c(bundle):
answer = 0
score_per_cards = {
'a': 1,
'b': 2,
'c': 3,
'd': 4,
'e': 5
}
for card in bundle:
answer += score_per_cards[card]
return answer
def solution(n, bundle):
a_cards = func_a(bundle, 0)[:n]
b_cards = func_a(bundle, 1)[:n]
a_score = func_c(a_cards)
b_score = func_c(b_cards)
return func_b(a_score, b_score)
댓글