1에서부터 6까지의 눈을 가진 4개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.
예를 들어, 4개의 눈이 3, 3, 3, 3으로 주어지면 50,000+3×5,000으로 계산되어 65,000원의 상금을 받게 된다.
4개의 눈이 3, 3, 6, 3으로 주어지면 상금은 10,000+3×1,000으로 계산되어 13,000원을 받게 된다.
또 4개의 눈이 2, 2, 6, 6으로 주어지면 2,000+2×500+6×500으로 계산되어 6,000원을 받게 된다.
4개의 눈이 6, 2, 1, 6으로 주어지면 1,000+6×100으로 계산되어 1,600원을 받게 된다.
4개의 눈이 6, 2, 1, 5로 주어지면 그 중 가장 큰 값이 6이므로 6×100으로 계산되어 600원을 상금으로 받게 된다.
N(1 ≤ N ≤ 1,000)명이 주사위 게임에 참여하였을 때, 가장 많은 상금을 받은 사람의 상금을 출력하는 프로그램을 작성하시오.
set()
을 이용하여 리스트의 요소 중 중복을 제거하여 해결
list = [5, 5, 5, 5]
listSet = set(list) # {5}
print(len(listSet)) # 1
list = [5, 5, 5, 1]
listSet = set(list) # {5, 1}
print(len(listSet)) # 2
list = [1,1,2,2]
listSet = set(list) # {1, 2}
print(len(listSet)) # 2
list = [1,2,5,5]
listSet = set(list) # {5, 1, 2}
print(len(listSet)) # 3
list = [1, 2, 3, 4]
listSet = set(list) # {1, 2, 3, 4}
print(len(listSet)) # 4
def func(arr):
result = 0
if len(set(arr)) == 1:
result = 50000 + (arr[0] * 5000)
elif len(set(arr)) == 2:
if arr[1] == arr[2]:
result = 10000 + (arr[1] * 1000)
elif arr[1] != arr[2]:
result = 2000 + (arr[0] * 500) + (arr[2] * 500)
elif len(set(arr)) == 3:
if arr[0] == arr[1]:
result = 1000 + (arr[0] * 100)
elif arr[1] == arr[2]:
result = 1000 + (arr[1] * 100)
else:
result = 1000 + (arr[2] * 100)
elif len(set(arr)) == 4:
result = arr[3] * 100
return result
N = int(input())
answer = []
for i in range(N):
arr = sorted(list(map(int, (input().split()))))
answer.append(func(arr))
print(max(answer))
풀이 에서 설명했던 것을 이용하여 if, elif
조건문으로 해결하였다.
여기서 주의할 점은 주사위의 눈을
input()
을 이용하여 받은 다음,arr
에 저장할 때sorted()
후 저장한다는 것이다.
N = int(input())
answer = []
for i in range(N):
arr = sorted(list(map(int, (input().split()))))
answer.append(func(arr))
print(max(answer))
이유는 리스트를 집합으로 변환한 후 집합의 길이를 이용하여 경우의 수를 나눴는데, 세부적으로 또 경우를 나눠야하고 상금에 어떤 값을 적용시켜야 할지 결정해야되기 때문이다.
예를 들어,
list = [5, 5, 5, 1]
list2 = [2, 2, 1, 1]
print(len(set(list))) # 2
print(len(set(list2))) # 2
위 코드의 두 집합의 크기는 같다. 따라서 sorted()
를 적용한다.
temp1 = sorted(list) # [1, 5, 5, 5]
temp2 = sorted(list2) # [1, 1, 2, 2]
temp1의 경우, temp1[1]
, temp[2]
가 다르다. 4개의 눈들을 정렬하여 [1]과 [2] 중간 값들을 비교했을 때 다르면 2개씩 같고 서로 다르다는 것이다. ex)[1,1,2,2]
temp2의 경우, temp1[1]
, temp2[2]
가 같다. 4개의 눈들을 정렬하여 두 값이 같으면 3개 같고 1개 다르다는 것이다. ex)[1,1,1,2]