카테고리 없음

[인프런-파이썬 알고리즘 문제풀이 입문] 정다면체

킹왕짱지지 2024. 3. 31. 18:22
 

문제

두 개의 정 N면체와 정 M면체의 두 개의 주사위를 던져서 나올 수 있는 눈의 합 중 가장 확률이 높은 숫자를 출력하는 프로그램을 작성하세요. 
정답이 여러 개일 경우 오름차순으로 출력합니다. 

 

입력

첫 번째 줄에는 자연수 N과 M이 주어집니다. N과 M은 4, 6, 8, 12, 20 중의 하나입니다. 

출력

첫 번째 줄에 답을 출력합니다. .

예제 입력 1 

4 6

예제 출력 1 

5 6 7

 

풀이 1) 

- 내가 푼 풀이 

import sys
N, M = map(int, sys.stdin.readline().split())
Map=  {}
temp = 0

for i in range(N):
    for j in range(M):
        temp=(i+1)+(j+1)
        if temp in Map:
            Map[temp]+=1
        else:
            Map[temp]=1

map_value=max(Map.values())
 
result = [k for k, v in Map.items() if v == map_value]
result.sort()
print(*result)

 

풀이 2

- 강사님이 푼 풀이

# 강사님 풀이
# 리스트로 초기화해서 만들기! 인덱스에 따른 카운트
import sys
N, M= map(int, sys.stdin.readline().split())
list=[0]*(N+M+3) #0으로 리스트 초기화


for i in range(1, N+1):
    for j in range(1, M+1):
        list[i+j]+=1
print(list)

for i in range(len(list)):
    if list[i]==max(list):
        print(i, end=' ')

 

개념

# value로 key 찾기
[key for key, value in 맵이름.items() if value == 원하는값]

#리스트 언패킹 - 출력이 [5, 6, 7]이 아니라 5 6 7 로 출력됨
*리스트명

#리스트 초기화 - 0으로 초기화 하는 법
list=[0]*(초기화하고 싶은 수)