백준 2480 주사위 세개 문제 리뷰

🐒 문제

1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.

같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.
같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다.
모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.

첫째 줄에 3개의 눈이 빈칸을 사이에 두고 각각 주어진다.
첫째 줄에 게임의 상금을 출력 한다.

입력 예시

3 3 6

출력 예시

1300

나의 풀이


a, b, c = map(int,input().split())

if a == b:
    if a == c:
        print(10000+a*1000)
    else:
        print(1000+a*100)
elif a == c:
    print(1000+a*100)
elif b == c:
    print(1000+b*100)
else:
    x = [a,b,c]
    x.sort()
    print(x[2]*100)
    #^^^print(max(x)*100) 가능!

조건문을 좀 더 간단하게 쓰고싶었는데 적당한 방법을 못찾았다.

3번째 조건에서 가장 큰 수를 찾아야하는데 나는 요소들을 배열에 넣어서 정렬하고 가장 뒤의 값을 찾았는데

다른 사람들의 풀이를 보니 max함수라는게 있었다
list나 튜플, 문자열 같은 iterable 자료형을 넣으면 가장 큰 요소를 리턴한다고 한다.
함수에 자료형을 여러개 넣으면 0번째 요소부터 비교하여 큰 자료형을 리턴하는 것 같다

반대로 min함수도 있다.



a = list(map(int,input().split()))

# 세 주사위가 같을때
if a[0] == a[1] == a[2]:
    print(10000+a[0]*1000)

else:
    for i in range(2):
        if a.count(a[i]) == 2: # 두 주사위만 같을 떄
            print(1000+a[i]*100)
            break
        elif a[0] != a[1] != a[2]: # 세 주사위가 서로 다를때
            print(max(a)*100)
            break

count 함수를 알게 되어서 한번 사용해봤다


백준은 모범답안이 따로 없었다.

좋은 웹페이지 즐겨찾기