[Q]
1. 4p -> 1111 * p
2. 3p + q -> (10 * p + q)^2
3. 2p + 2q -> (p+q) * |p-q|
4. 2p + q + r -> q * r
5. p + q + r + s -> min(p, q, r, s)
6. 1 <= a, b, c, d <= 6
def solution(a, b, c, d):
answer = 0
return answer
- len(set([a, b, c, d])) 활용
[A] (내가 쓴 답)
def solution(a, b, c, d) :
answer = 0
dice = [a, b, c, d]
tmp = list(set(dice))
if len(tmp) == 4 :
answer = min(tmp)
elif len(tmp) == 3 :
for i in dice :
if dice.count(i) == 2 :
ans = [x for x in tmp if x != i]
answer = ans[0] * ans[1]
elif len(tmp) == 2 :
for i in dice :
if dice.count(i) == 3 :
ans = [x for x in tmp if x != i][0]
answer = (10 * i + ans)**2
else :
ans = [x for x in tmp if x != i][0]
answer = (i + ans)*(abs(i - ans))
else :
answer = 1111 * tmp[0]
return answer
-> 테스트 기준 40 / 42
- 두 개가 왜 실패했을까해서 반례 찾아봄 -> 1, 1, 1, 2
- if dice.count(i) == 3에서 else를
elif dice.count(ele) == 2 :
로 변경하니 해결됨.
(수정한 답)
def solution(a, b, c, d) :
answer = 0
dice = [a, b, c, d]
tmp = list(set(dice))
if len(tmp) == 4 :
answer = min(tmp)
elif len(tmp) == 3 :
for ele in dice :
if dice.count(ele) == 2 :
q = [x for x in tmp if x != ele]
answer = q[0] * q[1]
elif len(tmp) == 2 :
for ele in dice :
if dice.count(ele) == 3 :
p = ele
q = [x for x in tmp if x != ele][0]
answer = (10 * p + q)**2
elif dice.count(ele) == 2 :
p = ele
q = [x for x in tmp if x != ele][0]
answer = (p + q)*(abs(p - q))
else :
answer = 1111 * tmp[0]
return answer
[A] 다른 답들
def solution(a, b, c, d):
l = [a,b,c,d]
c = [l.count(x) for x in l]
if max(c) == 4:
return 1111*a
elif max(c) == 3:
return (10*l[c.index(3)]+l[c.index(1)])**2
elif max(c) == 2:
if min(c) == 1:
return eval('*'.join([str(l[i]) for i, x in enumerate(c) if x == 1]))
else:
return (max(l) + min(l)) * abs(max(l) - min(l))
else:
return min(l)
def solution(a, b, c, d):
answer = 0
if a==b==c==d:
answer=1111*a
elif a==b==c:
answer=(10*a+d)**2
elif a==b==d:
answer=(10*a+c)**2
elif a==c==d:
answer=(10*a+b)**2
elif b==c==d:
answer=(10*d+a)**2
elif a==b and c==d:
answer=(a+c)*abs(a-c)
elif a==c and b==d:
answer=(a+b)*abs(a-b)
elif a==d and b==c:
answer=(a+b)*abs(a-b)
elif a==b:
answer=c*d
elif a==c:
answer=b*d
elif a==d:
answer=b*c
elif b==c:
answer=a*d
elif b==d:
answer=a*c
elif c==d:
answer=a*b
else:
answer=min(a,b,c,d)
return answer
'Algorithm > 프로그래머스' 카테고리의 다른 글
[Python] [코딩 기초 트레이닝] / qr code (0) | 2024.08.17 |
---|---|
[Python] [코딩 기초 트레이닝] / 배열 만들기 4 (0) | 2024.08.17 |
[Python] [코딩 기초 트레이닝] / 배열 만들기 2 (0) | 2024.08.15 |
[Python] [코딩 기초 트레이닝] / 문자열 겹쳐쓰기 (0) | 2024.08.15 |
[Python] [코딩 기초 트레이닝] / 코드 처리하기 (0) | 2024.08.15 |