[구현] (2-5) 정다면체 주사위
2024. 6. 11. 21:33ㆍ개발의 흔적/코딩테스트
문제: 정다면체
두 개의 정 N면체와 정 M면체의 두 개의 주사위를 던져서 나올 수 있는 눈의 합 중 가장 확 률이 높은 숫자를 출력하는 프로그램을 작성하세요.
정답이 여러 개일 경우 오름차순으로 출력합니다.
<입력설명>
첫 번째 줄에는 자연수 N과 M이 주어집니다. N과 M은 4, 6, 8, 12, 20 중의 하나입니다.
<출력설명>
첫 번째 줄에 답을 출력합니다.
4 6
출력예제5 6 7
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
max = N+M #각 주사위의 합이 나올수있는 최대 숫자, min은 무조건 2
possible_cases = {}
for i in range(2, max+1): # 두 수의 합이 될수있는 경우의 수 구할거얌
# ex) i == 4
cnt = 0
for n in range(1, i+1): # possible (n, m): (1,3), (2,2), (3,1)
m = i - n
if 0<n<=N and 0<m<=M:
#n and m can be contained in dice N and M in respectly
cnt += 1
#cnt == 3 means there are 3 cases to be made
possible_cases[i] = cnt
max_possible = 0
cases_str = ""
for case in range(2, max+1):
possible = possible_cases[case]
# print(case, possible)
if possible == max_possible:
max_possible = possible
cases_str += f" {case}"
if possible > max_possible:
max_possible = possible
cases_str = ""
cases_str += f"{case}"
print(cases_str)
'개발의 흔적 > 코딩테스트' 카테고리의 다른 글
| [구현] (2-8) N까지의 소수 구하기 vs 한 숫자의 소수여부 판별 (1) | 2024.06.12 |
|---|---|
| [구현] (2-7) 소수찾는 가장 작은 시간복잡도 : 에라토스테네스의 체 (1) | 2024.06.12 |
| [구현] (2-4) 평균과 편차 (0) | 2024.06.11 |
| [구현] (2-3) combinations의 시간복잡도 (0) | 2024.06.11 |
| [구현] (2-2) 자료구조의 원하는 구간만 sorting하기 (0) | 2024.06.11 |