Algorithm Problems

[Cos Pro 2급] 4차 3번 - 카드 게임

WakaraNai 2021. 2. 14. 19:45
728x90
반응형

문제


 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점을 획득하여 게임은 무승부로 끝납니다.

 

 

 

Python

def solution(n, bundle):
    a, b = bundle[ : n*2: 2], bundle[1: n*2: 2] #6,7까지
    sumA =sum( [ ord(i)-96 for i in a] )
    sumB =sum( [ ord(i)-96 for i in b] )
    if sumA==sumB:
    	return [0, sumA]
	elif sumA > sumB:
    	return [1,sumA]
	else:
    	return[2,sumB]
        
    # 삼항 연산자를 중첩하여 한 줄로 나타내기
    #return [0,sumA] if sumA==sumB else ([1,sumA] if sumA > sumB else [2,sumB])


print(solution(4, "cacdbdedccbb"))
728x90
반응형