문제

정다면체


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


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


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


▣ 입력예제 1
4 6


▣ 출력예제 1
5 6 7


내 풀이

# 내 코드
n, m = map(int, input().split())
#print(n, m)
maxNum = n + m
sum = []
# 주사위 모든 경우의 수
count = [0 for i in range(maxNum)]
for i in range(n):
    for j in range(m):
        sum.append((i+1) + (j+1))
        
#print(sum)
#print(len(sum)) # 4 * 6

# 카운트하기
for i in range(maxNum):
    for j in range(len(sum)):
        if sum[j]== i + 1:
            count[i] += 1

#print(count)

# 가장 큰 수 고르기 (가장 많은 확률)
minIndex = -1
maxIndex = -1
maxNum = 0
for i, x in enumerate(count):
    if x > maxNum:
        maxNum = x
        minIndex = i
    if x == maxNum:
        maxIndex = i
#print(maxNum)
#print(minIndex)
#print(maxIndex)

# 그 경우의 index 구하기
for i in range (minIndex + 1, maxIndex + 2): #인덱스조정
    print(i, end=" ")

점수


강사님 풀이

# 강사님 코드
#import sys
#sys.stdin=open("input,txt", "r")
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=" ")

+ Recent posts