*본 문제는 인프런 김태원 강사님의 파이썬 알고리즘 문제풀이 강의에 기반합니다.
문제 정다면체
두 개의 정 N면체와 정 M면체의 두개의 주사위를 던져서 나올 수 있는 눈의 합 중 가장 확률이 높은 숫자를 출력하는 프로그램을 작성하세요.
정답이 여러 개일 경우 오름차순으로 출력합니다.
-입력 설명
첫 번째 줄에는 자연수 N과 M이 주어집니다. N과 M은 4, 6, 8,12 , 20 중 하나입니다.
-출력설명
첫 번째 줄에 답을 출력합니다.
-입력예제1
4 6
-출력예제1
5 6 7
풀이 및 생각
4면체가 나올 수 있는 값 1 2 3 4
2. 6면체에서 " 1 2 3 4 5 6
합 중 나올 수 있는 값 2 3 4 5 / 3 4 5 6 / 4 5 6 7 / 5 6 7 8 / ...24 개
1 | 2 | 3 | 4 | 5 | 6 | |
1 | 2 | 3 | 4 | 5 | 5 | 7 |
2 | 3 | 4 | 5 | |||
3 | ||||||
4 |
확률이 높다 -> 중복이 젤 많은 값을 여기다가 넣으면 되는데 이것을 어떻게 센담 ?->
인덱스 번호랑 같다 . 같으면 인덱스의 값을 ++ (cnt[i+j]+=1)
(구현)
1.이중 for 문 (1부터 n+1까지 ) n , m 두개의 합 ( 표 완성)
2. max 제일 큰 값을 max에 담고
3. max와 값이 같은 것을 출력하면 된다.
import sys
#sys.stdin=open("input.txt", "rt")
n, m=map(int, input().split())
cnt=[0]*(n*m) # 리스트 크기 할당
max=0
for i in range(1, n+1):
for j in range(1, m+1):
cnt[i+j]+=1 ###인덱스의 값 cnt[0]=0
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=' ') #
'알고리즘? > 기본2' 카테고리의 다른 글
8. 뒤집은 소수 (1) | 2023.05.06 |
---|---|
6. 자릿수의 합 (0) | 2023.05.05 |
4. 대표값 eumerate() (1) | 2023.05.04 |
3. k번째 큰수 set() (0) | 2023.05.04 |
2. k번째 수 (0) | 2023.05.04 |