알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
문제
[정다면체]
두 개의 정 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
중요내용
- cnt = [0]*(n+m+1) 코드는 두 주사위 합의 최대값 만큼 인덱스 번호가 필요하기 때문에, n+m+1을 곱해준 것이다.
- 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 |
댓글