본문 바로가기

Algorithm/Inflearn

[Python/알고리즘] 인프런 정다면체

문제 출처

두 개의 정 N면체와 정 M면체의 두 개의 주사위를 던져서

나올 수 있는 눈의 합 중 가장 확률이 높은 숫자를 출력하는 프로그램을 작성하세요.

정답이 여러 개일 경우 오름차순으로 출력합니다


풀이 코드

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

코드 설명

  1. cnt를 리스트로 만듬
  2. i와 j 주사위 조합으로 눈의 합을 카운팅 (3이 몇개 나오는지, 4가 몇개 나오는지)
  3. enumerate 함수를 사용해서 인덱스와 값을 찾아 빈도의 수가 최대인 최대값 찾기
  4. enumerate 함수를 사용해서 최대값의 인덱스 찾기

기타 사항

for i in range(len(n)):
int has no len()
n, m = map(int, input().split())
cnt = [0]*100
# for i in range(len(n)):
# int has no len()
for i in range(1, n+1):
    for j in range(1, m+1):
        cnt[i+j]+=1
max = 0
for i in range(len(cnt)):
    if cnt[i]> max:
        max =cnt[i]
for i in range(len(cnt)):
    if max == cnt[i]:
        print(i, end = ' ')

enumerate 함수를 잘 사용하자.

반응형