파이썬 알고리즘 005 | 정다면체

Yunny.Log ·2021년 1월 6일
0

Algorithm

목록 보기
5/318
post-thumbnail

4. 정다면체

두 개의 정 N면체와 정 M면체의 두 개의 주사위를 던져서 나올 수 있는 눈의 합 중 가장 확
률이 높은 숫자를 출력하는 프로그램을 작성하세요.

정답이 여러 개일 경우 오름차순으로 출력합니다.

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

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

▣ 입력예제 1
4 6

▣ 출력예제 1
5 6 7

<내 풀이>

import sys
sys.stdin=open('input.txt', 'rt')

n, m = map(int, input().split())
frequently_appear=0
sums=[]
highest=set([])

for i in range(1,n+1) : 
    for j in range(1,m+1) :
        a=i+j
        sums.append(a)

for x in sums : 
    if frequently_appear < sums.count(x):
         frequently_appear= sums.count(x)

for x in sums : 
    if sums.count(x) == frequently_appear :
        highest.add(x)
for i in highest :
    print(i, end=' ')

<풀이>

이렇게 생각해서 개수를 갱신시켜주는 방식으로 접근

n,m = map(int, input().split())
cnt=[0]*(n+m+1)
max=0

for i in range(1,n+1) :
	for j in range(1,m+1)
    	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=' ')

<반성점>

  • 코드가 너무 길어서 시간이 오래 소모될 것 같다

<배운 점>

  • set=([])
    중복을 허용하지 않아서 중복 없애야 할 때 쓰면 좋다
  • 원소가 여러개 있는 리스트 초기화 하는 방법 lst=[0]*(개수)

(ex) lst=[0]*3 = [0, 0, 0]

0개의 댓글