두 개의 정 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=' ')