문제 출처

두 개의 정 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 함수를 잘 사용하자.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기