반응형
이번 문제는 보기에는 복잡해보이지만 천천히 읽어보면 어렵지 않다.
제일 높은 상금을 구하는 문제들로 문제에서 요구하는 상금 구하는 조건들을 잘 처리해주면 쉽게 풀리는 문제이다. 문제에서 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)
좀 더 줄긴 했는데 아직도 중간에 복잡해서 같은 숫자만 하나 반환해주는 함수는 없나싶다.
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘/백준] 2798번 블랙잭 Python 파이썬 (0) | 2023.02.21 |
---|---|
[알고리즘/백준] 2506번 점수 계산 Python 파이썬 (0) | 2023.02.19 |
[알고리즘/백준] 2010번 플러그 Python 파이썬 (0) | 2023.02.18 |
[알고리즘/백준] 1085번 직사각형에서 탈출 Python 파이썬 (0) | 2023.02.18 |
[python/알고리즘] Softeer(소프티어) 바이러스 풀이 (0) | 2023.02.10 |
댓글