하루한줄 코딩일기

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

Algorithm

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

jjuha 2022. 1. 24. 20:37

인프런 > 파이썬 알고리즘 문제풀이

섹션 2.5 정다면체

👊 내 문제 풀이

arr 리스트에 N+M 의 모든 경우의 수를 저장하고, Counter를 사용해 각 숫자 별 발생 빈도를 확인한다. arr 리스트의 길이 만큼 반복문을 돌며, value가 가장 높은 발생 빈도와 일치할 경우 해당 key값을 출력한다.

import collections
n, m = map(int, input().split())
arr = []

for i in range(1,n+1):
	for j in range(1,m+1): 
		arr.append(i+j)		# N + M의 모든 경우의 수 저장

arr = collections.Counter(arr)		# 숫자와 발생 빈도를 딕셔너리에 저장
max = max(sorted(list(arr.values())))	# 가장 높은 발생 빈도 (ex.4회)

for i in range(len(arr)):
	if (list(arr.values())[i] == max):	# 가장 높은 발생 빈도를 가질 경우
		print(list(arr.keys())[i])	# key값 출력

채점 결과

 

💡 강의 해답

합해서 나온 값을 cnt 리스트의 인덱스로 하고, 해당 값이 나올 때 마다 그 인덱스에 +1씩 해주는 방식을 사용했다.

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=' ')
Comments