반응형
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()를 이용해서 가장 큰 수를 찾습니다.
- max(iterable, *[, key, default] , max(arg1, arg2, *args[, key])
- iterable에서 가장 큰 항목이나 두 개 이상의 인자 중 가장 큰 것을 돌려줍니다.
- docs.python.org/ko/3/library/functions.html#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)
반응형
'코딩테스트 > backjoon' 카테고리의 다른 글
[backjoon][Bronze4] 인공지능 시계 - 2530번 (0) | 2021.04.12 |
---|---|
[backjoon][Bronze4] 오븐 시계 - 2525번 (0) | 2021.04.12 |
[backjoon][Bronze4] 사파리월드- 2420번 (0) | 2021.04.12 |
[backjoon][Bronze4] 손익분기점 - 1712번 (0) | 2021.04.11 |
[backjoon][Bronze4] 두 수 비교하기 - 1330번 (0) | 2021.04.11 |
[backjoon][Bronze4] TV 크기 - 1297번 (0) | 2021.04.11 |
[backjoon][Bronze4] 8진수 2진수 - 1212번 (0) | 2021.04.11 |