본문 바로가기
코딩테스트/backjoon

[backjoon][Bronze4] 주사위 세개 - 2480번

by codeok 2021. 4. 12.
반응형

backjoon Bronze4인 2480번 주사위 세 개 문제입니다.

 

문제

 

 

풀이

풀다보니 문제 풀기에 급급해서 막 푼 거 같습니다...

 

마지막 조건인 모두 다른 눈이 나오는 경우에는 가장 큰 눈을 골라야 해서 리스트에 넣어서 정렬을 이용해서 출력했습니다.

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

data = [a,b,c]

if a == b and b == c and a == c:
    print(10000 + a * 1000)
elif a == b:
    print(1000 + a * 100)
elif b == c:
    print(1000 + b * 100)
elif a == c:
    print(1000 + a * 100)
elif a != b and b != c and a != c:
    data.sort()
    print(data[2] * 100)

 

 

다른 사람의 max()를 사용한 풀이

다른 분의 풀이는 기존에 제가 작성한 elif a== b, b == c를 하나의 elif문으로 해결을 하고, else문은 a, b, c 가 모두 다른 경우이므로 max()를 이용해서 가장 큰 수를 찾습니다.

 

a,b,c=map(int,input().split())
if a==b==c:
    print(10000+a*1000)
elif a==b or b==c:
    print(1000+b*100)
elif a==c:
    print(1000+a*100)
else:
    print(max(a,b,c)*100)

 

다른 사람의 set()을 사용한 풀이

  • 1행 : sorted(list(map(int, input().split()))) => sorted([3, 2, 1])
    • sorted()를 진행하면 [1, 2, 3] 데이터가 저장이 됩니다.
    • 사용자가 데이터를 3 2 1을 입력한다면 입력을 받은 후에 오름차순 정렬을 하기에 1 2 3으로 저장이 됩니다.

 

  • 3행 : len(set(N)) == 1  => len({1,2,3}) 
    • len(set(N))은 N 리스트를 set() 집합 연산자로 중복된 것을 빼고, len() 현재 항목의 개수를 셉니다.
    • 만약, 사용자가 [3, 3, 3] 모두 같은 숫자를 입력한다면 len(set([3,3,3]))은 len({3})으로 1이 됩니다. 

 

  • 5행 : len(set(N)) == 2
    • 동일한 숫자가 두 개일 경우를 처리합니다.

 

  • 7행 : else 구문은 len(set(N)) == 3으로 모두 같지 않은 경우이므로 가장 큰 수는 오름차순 정렬을 해서 가장 오른쪽 N [2]에 있기에 8행에서 해당 자리를 곱해서 처리합니다.
N = sorted(list(map(int, input().split())))

if len(set(N)) == 1:
    print(10000 + N[0] * 1000)
elif len(set(N)) == 2:
    print(1000 + N[1] * 100)
else:
    print(N[2] * 100)
반응형