코딩테스트 파이썬/파이썬 프로그래머스 2단계
시소 짝꿍
세용용용용
2023. 10. 4. 12:47


나의코드
모든 경우를 다 따져준다!! 완탐
def solution(weights):
answer = 0
for i in range(len(weights)-1):
print(weights[i])
first_weights = [weights[i]*2, weights[i]*3, weights[i]*4]
for j in range(i+1,len(weights)):
if j == i:
continue
for x in [2,3,4]:
if (weights[j]*x) in first_weights:
answer += 1
break
#print(answer)
return answer
solution([100,180,360,100,270])


우씨이이잉!!
수정 코드
from collections import Counter
def solution(weights):
answer = 0
w=Counter(weights)
#print(w)
for i in w:
#print(i)
# 만약 동일한게 있으면 경우의수 따져줌
# (n*(n-1))/2
if w[i] >= 2:
answer += (w[i]*(w[i]-1))//2
# 2:3 인 경우를 따져준다
# 경우의 수는 개수 곱하기로
if i*(2/3) in w:
answer += (w[i]*w[i*(2/3)])
# 2:4 인 경우를 따져준다
# 경우의 수는 개수 곱하기로
if i*(2/4) in w:
answer += (w[i]*w[i*(2/4)])
# 3:4 인 경우를 따져준다
# 경우의 수는 개수 곱하기로
if i*(3/4) in w:
answer += (w[i]*w[i*(3/4)])
#print(answer)
return answer
solution([100,180,360,100,270])
수학적으로 접근해야됨 ㅠㅠㅠ 꾸우웅
