반응형
[문제 출처]
https://www.acmicpc.net/problem/1233
[문제 풀이]
세 개의 주사위 S1, S2, S3가 있고, 각 주사위에 몇까지의 숫자가 적혀있는지 입력으로 주어진다.
만일
3 2 3이라고 주어지면
S1 주사위는 1부터 3까지의 숫자가, S2는 1부터 2까지, S3는 1부터 3까지의 숫자가 적혀있다.
이 주사위들을 굴려서 나올 수 있는 모든 경우의 수를 따져보고 각 경우의 합을 구했을 때 가장 자주 나오는 합을 구하는 문제이다.
따라서 딕셔너리를 이용해서 합의 빈도를 계산하였다.
딕셔너리에는 세 숫자의 합을 키로, 합의 빈도수를 값으로 하여 저장하였다.
가장 빈도가 높은 합을 구하는 문제이고 만일 답이 여러 개라면 합이 작은 것을 출력해야 하기에
내림차순으로 정렬한 후에 같거나 큰 경우에 최댓값을 바꾸어 주는 방법으로 답을 찾았다.
sorted(sum.items())로 딕셔너리를 정렬하게 되면 키값을 기준으로 오름차순으로 정렬되며,
아래 코드와 같이 reverse=True를 붙여주면 내림차순으로 정렬이 된다.
#1223
s1, s2, s3 = map(int, input().split())
sum = dict()
for i in range(1,s1+1):
for j in range(1,s2+1):
for k in range(1,s3+1):
if i+j+k in sum.keys():
sum[i+j+k] += 1
else:
sum[i+j+k] = 1
max_v = 0
result = 0
for k,v in sorted(sum.items(), reverse=True):
if v >= max_v:
max_v = v
result = k
print(result)
반응형
'알고리즘 > python' 카테고리의 다른 글
[python/파이썬] 백준 1247 부호 (0) | 2023.01.26 |
---|---|
[python/파이썬] 백준 1145 적어도 대부분의 배수 (0) | 2023.01.25 |
[python/파이썬] 백준 1159 농구 경기 (0) | 2023.01.19 |
[python/파이썬] 백준 1100 하얀 칸 (0) | 2023.01.18 |
[python/파이썬] 백준 1057 토너먼트 (0) | 2023.01.17 |