[알고리즘]정다면체

김도연·2024년 1월 2일

알고리즘

목록 보기
5/56

문제

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

입력예제

4 6

출력예제

5 6 7

[내 코드]

def max(list):
    max=0
    for i in range(len(list)):
        if(max<list[i]):
            max=list[i]
    return max
N, M=map(int,input().split())
a=[]
count=[0]*(N+M+1)
for i in range(N):
    b=[]
    for j in range(M):
        b.append(i+j+2)
        count[i+j+2]+=1
    a.append(b)
    
for j in range(len(count)):
    if(max(count)==count[j]):
        print(j,end=' ')

1.리스트 중 최댓값 찾는 함수 max 정의
2.2중 배열 사용을 위한 리스트 초기화
3.count라는 새로운 리스트를 생성하여 숫자합이 한 번 나올 때마다 count의 index를 두 수의 합으로 설정하고 해당 인덱스의 값을 +1씩 증가
4.count의 값이 제일 큰 인덱스(=실제 주사위를 던져 나온 두 수의 합)를 출력

[해설코드]

n, m=map(int, input().split())
cnt=[0]*(n+m+3)
max=-2147000000
for i in range(1,n+1):
	for j in range(1,m+1):
    	cnt[i+j]+=1
for i in range(n+m+1):
	if cnt[i]>max:
    max=cnt[i]
for i in range(n+m+1):
	if cnt[i]==max:
    	print(i,end=' ')

0개의 댓글