📌
두 개의 정 N면체와 정 M면체의 두 개의 주사위를 던져서 나올 수 있는 눈의 합 중 가장 확 률이 높은 숫자를 출력하는 프로그램을 작성하세요. 정답이 여러 개일 경우 오름차순으로 출력합니다.
ex) n=5, m=4
1 2 3 4 5
1 2 3 4 5 6
2 3 4 ...
3
4
✔ 내가 짠 코드
import sys
sys.stdin=open('input.txt', "r")
n, m=map(int, input().split())
#n+m은 만들어질 수 있는 최댓값이기 때문에 배열 index를 n+m만큼 할당한다.
cnt=[0] * (n+m)
hap, max=0, 0
for i in range(1, n+1):
for j in range(1, m+1):
hap=i+j
#해당하는 index의 값을 1 더한다.
cnt[hap-1] += 1
#가장 많은 확률의 수를 구한다.
for i in range(0, n+m):
if max < cnt[i]:
max=cnt[i]
for i in range(0, n+m):
if max == cnt[i]:
print(i+1, end=' ')
✔ 실제 코드
n, m=map(int, input().split())
cnt=[0]*(n+m+3)
max=0
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='')
>>>
실제 코드에선 배열 크기를 n+m보다 3 크게 만들어 여유롭게 해주었다.
따라서 2,3 번째 반복문 범위가 다르다.
hap이라는 변수를 굳이 둘 필요가 없었으니 지워도 될 것 같다.
'알고리즘' 카테고리의 다른 글
[알고리즘] 회문 문자열 검사 (0) | 2022.01.24 |
---|---|
[알고리즘] 점수계산 (0) | 2022.01.24 |
[알고리즘] 뒤집은 소수 (0) | 2022.01.21 |
[알고리즘] 소수 (0) | 2022.01.21 |
[알고리즘] 자릿수의 합 (0) | 2022.01.20 |