인프런 커뮤니티 질문&답변

주새별 Ju님의 프로필 이미지
주새별 Ju

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

9. 주사위 게임

[2-9. 주사위 게임] 풀이 좀 봐주세요

작성

·

128

0

import sys

sys.stdin = open('2_9.txt', 'rt')

def findDupValue(value):
  n_counter = {}
  for n in value:
    if n not in n_counter : n_counter[n] = 1
    else : n_counter[n] += 1
    
    if n_counter[n] == 2: return n

N = int(input())
dice = []
cnt_dice = []
prize = []

for i in range(N):
  dice.append(list(map(int, input().split())))
  cnt_dice.append(len(set(dice[i])))

for value, cnt in zip(dice, cnt_dice):
  if cnt == 1 : prize.append(10000 + (value[0]) * 1000)
  elif cnt == 2 : prize.append(1000 + (findDupValue(value)) * 100)
  else : prize.append(max(value) * 100)
  
print(max(prize))

 

for문을 2개 쓴게 걸리는데 이런 코드는 어떤가요?

입력받을 때 주사위 값을 묶어서 배열로 저장하는 dice 리스트와

set으로 받아서 길이를 저장하는 cnt_dice 리스트를 사용했고

cnt 리스트가 2이면 findDupValue 함수에서 dictionary를 사용해서 다시 카운팅해 중복되는 숫자를 찾아 계산하는 코드입니다.

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

잘 하신 코드입니다.

주새별 Ju님의 프로필 이미지
주새별 Ju

작성한 질문수

질문하기