목차
정다면체
두 개의 정 N면체와 정 M면체의 두 개의 주사위를 던져서 나올 수 있는 눈의 합 중 가장 확률이 높은 숫자를 출력하는 프로그램을 작성하세요.
정답이 여러 개일 경우 오름차순으로 출력합니다.
▣ 입력설명
첫 번째 줄에는 자연수 N과 M이 주어집니다. N과 M은 4, 6, 8, 12, 20 중의 하나입니다.
▣ 출력설명
첫 번째 줄에 답을 출력합니다.
▣ 입력예제 1
4 6
▣ 출력예제 1
5 6 7
나의 코드
n,m=map(int,input().split())
arr=[0]*(n+m+1)
for i in range(1,n+1):
for j in range(1,m+1):
arr[i+j]+=1
M=max(arr)
res=[]
for i in range(2,n+m+1):
if arr[i]==M:
res.append(i)
print(res)
두 주사위의 합으로 가능한 범위는 2~ 각 눈의 수의 합 이다.
우선 각 눈의 합을 인덱스로 가지는arr리스트를 생성하고
2중 반복문으로 해당 눈의 합이 나올때마다 arr의 해당 인덱스에 1을 더한다.
그리고 반복문을 돌며 arr중 최대값과 같은 값을 가진 인덱스를 res 리스트에 저장한다.
그후 res를 출력 !!
import sys
sys.stdin=open("input.txt", "r")
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]=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=' ')
나의 코드와 전체적으로 비슷하다
단지 res리스트 없이 바로 출력을 진행했다~
'코딩테스트[파이썬] > 알고리즘 문제풀이 입문' 카테고리의 다른 글
[구현력 기르기] - 소수의개수(에라토스테네스의 체) (0) | 2024.02.05 |
---|---|
[구현력 기르기] - 자릿수의합 (2) | 2024.02.04 |
[구현력 기르기] - 대표값 (2) | 2024.02.04 |
[구현력 기르기] -k번째 큰수 (2) | 2024.02.04 |
[구현력 기르기] - k번째 수 (0) | 2024.02.04 |