본문 바로가기
알고리즘

[알고리즘/백준] 2476번 주사위 게임 Python 파이썬

by 배애앰이 좋아 2023. 2. 19.
반응형

이번 문제는 보기에는 복잡해보이지만 천천히 읽어보면 어렵지 않다. 

 

 

제일 높은 상금을 구하는 문제들로 문제에서 요구하는 상금 구하는 조건들을 잘 처리해주면 쉽게 풀리는 문제이다. 문제에서 1, 2, 3 에 해당되게 같은 눈이 3개인지 2개인지 없는지 판별한 후 같은 눈에 * 100 / 가장 큰 눈에 * 100 이러한 부분들만 빼먹지 않고 잘 처리해주면 쉽게 풀린다.

 

다음과 같은 코드를 통해 통과하였다.

 

import sys
input = sys.stdin.readline

answer = 0
N = int(input())
for i in range(N):
    n1, n2, n3 = map(int, input().split())
    if n1 == n2 and n2 == n3:
        prize = 10000 + (n1*1000)
    elif n1 == n2:
        prize = 1000 + (n1*100)
    elif n2 == n3:
        prize = 1000 + (n2*100)
    elif n1 == n3:
        prize = 1000 + (n1*100)
    else:
        if n1 >= n2 and n1 >= n3:
            prize = (n1*100)
        elif n2 >= n1 and n2 >= n3:
            prize = (n2*100)
        elif n3 >= n1 and n3 >= n2:
            prize = (n3*100)
    if prize > answer:
        answer = prize
print(answer)

 

뭔가 코드가 복잡해서 줄이고 싶어서 아는 방법으로 마지막에 가장 큰수에 곱해서 구해주는 부분을 max() 함수를 통해서 줄였다. 아래와 같은 코드로도 통과할 수 있었다.

 

import sys
input = sys.stdin.readline

answer = 0
N = int(input())
for i in range(N):
    n1, n2, n3 = map(int, input().split())
    if n1 == n2 and n2 == n3:
        prize = 10000 + (n1*1000)
    elif n1 == n2:
        prize = 1000 + (n1*100)
    elif n2 == n3:
        prize = 1000 + (n2*100)
    elif n1 == n3:
        prize = 1000 + (n1*100)
    else:
        prize = (max(n1,n2,n3)*100)
    if prize > answer:
        answer = prize
print(answer)

 

좀 더 줄긴 했는데 아직도 중간에 복잡해서 같은 숫자만 하나 반환해주는 함수는 없나싶다. 

 

반응형

댓글