본문 바로가기
알고리즘

Algorithm - 정다면체

by DGK 2021. 11. 2.

 

알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.

 

문제

[정다면체]

 

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

 

 

*입력 설명 

첫 번째 줄에는 자연수 N과 M이 주어진다.

단, N과 M은 4, 6, 8, 12, 20 중 하나이다.

 

*출력 설명

첫 번째 줄에 답을 출력한다.

 

 


 

 

풀이(Python)

답안

import sys
sys.stdin = open('AA/input_5.txt', 'rt')

n, m = map(int, input().split())
cnt = [0]*(n+m+1)     
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=' ')
        
        
# 출력 : 5 6 7

 

input_5.txt(입력)

4 6

 

 

중요내용

  1. cnt = [0]*(n+m+1) 코드는 두 주사위 합의 최대값 만큼 인덱스 번호가 필요하기 때문에, n+m+1을 곱해준 것이다.
  2. max = -2147000000 코드는 대부분의 프로그램 언어에서 충분히 작은 정수형 숫자를 변수 max에 선언한 것이다.

 

 

'알고리즘' 카테고리의 다른 글

Algorithm - 소수의 개수(에라토스테네스 체)  (0) 2021.11.02
Algorithm - 자릿수의 합  (0) 2021.11.02
Algorithm - 대표값  (0) 2021.11.01
Algorithm - 최소값 구하기  (0) 2021.10.29
Algorithm - K번째 큰 수  (0) 2021.10.29

댓글