가자미의 개발이야기

[알고리즘] 두 개의 정다면체 주사위 본문

Computer Science/알고리즘

[알고리즘] 두 개의 정다면체 주사위

가자미 2021. 5. 18. 17:19

#문제:

두 개의 정 N면체와 정 M면체의 두 개의 주사위를 던져서 나올 수 있는 눈의 합 중 가장 확 률이 높은 숫자를 출력하는 프로그램을 작성하세요. 정답이 여러 개일 경우 오름차순으로 출력합니다.

 

▣ 입력설명

첫 번째 줄에는 자연수 N과 M이 주어집니다. N과 M은 4, 6, 8, 12, 20 중의 하나입니다.

 

▣ 출력설명

첫 번째 줄에 답을 출력합니다.

 

▣ 입력예제 1

4 6

 

▣ 출력예제 1

5 6 7

import sys
#sys.stdin=open("input.txt", "rt")

N, M = map(int, input().split())
arr=[]
arr2=[]
arrDic={}
for i in range(1,N+1):
    for j in range(1, M+1):
        arr.append(i+j)

arr.sort()
arrSet=list(set(arr))

for i in range(len(arrSet)):
    arrDic[arrSet[i]]=arr.count(arrSet[i])

valueList=list(arrDic.values())
valueList.sort(reverse=True)


for j in arrSet:
    if (arrDic.get(j)==valueList[0]):
        arr2.append(j)


arr2.sort()
for i in arr2:
    print("%d" %(i),end=' ')

#몰랐거나 검색했던 내용

1. 딕셔너리 선언 및 추가

파이썬에서는 key : value 쌍의 집합인 딕셔너리를 지원한다.

arrDic={}로 선언하고

arrDic[key]=value로 추가한다.

 

2. 딕셔너리 밸류 추출

arrDic.values()를 하면 객체의 형태로 밸류들만 모여 반환한다.

이를 리스트로 변환해야 인덱싱이나 정렬이 가능하다.

 

3. 밸류 얻기

arrDic.get(key)로 구하거나

arrDic[key]로 구할 수 있다.