문제
정다면체
두 개의 정 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=" ")
'코딩테스트 > 파이썬 코테 기본 강의' 카테고리의 다른 글
파이썬 알고리즘 문제풀이 : Section 2-7 / 소수(에라토스테네스 체) (1) | 2022.09.24 |
---|---|
파이썬 알고리즘 문제풀이 : Section 2-6 / 자릿수의 합 (0) | 2022.09.24 |
파이썬 알고리즘 문제풀이 : Section 2-4 / 대표값 (0) | 2022.09.24 |
파이썬 알고리즘 문제풀이 : Section 2-3 / k번째 큰 수 (1) | 2022.09.19 |
파이썬 알고리즘 문제풀이 : Section 2-2 / k번째 수 (1) | 2022.09.19 |