1 분 소요

사용 언어: Python3

문제

백준 2480

스크린샷 2023-03-29 오후 6 23 57

코드

내 풀이

# 같은 눈 3개 - 10000 + 눈*1000
# 같은 눈 2개 - 1000 + 눈*100
# 같은 눈 0개 - 가장 큰 눈*100

# 가장 빈도수가 높은 원소 반환
def most_frequent(data):
    return max(data, key=data.count) # ✅

# input
numbers = list(map(int, input().split()))

ans = 0
if len(set(numbers)) == 1:
  ans = 10000 + numbers[0] * 1000
elif len(set(numbers)) == 2:
  ans = 1000 + most_frequent(numbers) * 100
else:
  ans = max(numbers) * 100

# output
print(ans)
  • 같은 눈이 2개만 나오는 경우를 계산하는게 핵심이다.
    • 이때 같은 눈은 빈도수가 가장 많은 눈이 될 것이고, 빈도수가 가장 많은 눈을 구하기 위해 함수를 작성했다.
    • max() 함수에서 key를 이용하여 기준을 설정할 수 있다!

다른 풀이

# input
numbers = sorted(list(map(int, input().split()))) # ✅ 오름차순 정렬

ans = 0
if len(set(numbers)) == 1:
  ans = 10000 + numbers[0] * 1000
elif len(set(numbers)) == 2:
  ans = 1000 + numbers[1] * 100 # ✅
else:
  ans = numbers[2] * 100

# output
print(ans)
  • 마찬가지로 같은 눈이 2개만 나오는 경우를 확인하자.
    • numbers 리스트를 오름차순 정렬하면, 같은 눈이 2개인 경우에는 numbers[0]==numbers[1] 이거나 numbers[1]==numbers[2] 일수밖에 없다.
    • 따라서 numbers[1]은 무조건 가장 많은 눈이다.


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기