알고리즘/프로그래머스문제풀이

[Python/프로그래머스]두 큐 합 같게 만들기_[구현]

개발자 덕구🐾 2022. 10. 12. 11:10
728x90

 

 

 

 

 

🐾 20221202

🐾 20221205

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/118667

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

쉬워보임..!

풀긴 풀었는데 정확도가 100이 안나왔다

 

 

 

 

틀린코드 : 

from collections import deque 

def solution(queue1, queue2):
    answer = 0
    q1,q2  = deque(queue1),deque(queue2)
    
    Sum1 = sum(q1)
    Sum2 = sum(q2)
    S = Sum1 + Sum2
    l1, l2 = 0,0
    
    while l1 <len(q1) and l2 < len(q2) :
        print(q1[l1], q2[l2])
        if Sum1 == S//2 : 
            return answer 
        if Sum1 > Sum2 :
            Sum2 += q1[l1]
            Sum1 -= q1[l1]
            l1 +=1 
        else :
            Sum1 += q2[l2]
            Sum2 -= q2[l2]
            l2 +=1 
        answer +=1

    return -1

 

인덱스 이용해서 풀려고 했는데 생각해보니 힘들듯...😂

그래도 96점이라도 나온게 신기하다.

 

 

 

 

 

 

 

 

정답 코드 : 

 

from collections import deque 

def solution(queue1, queue2):
    answer = 0
    q1,q2  = deque(queue1),deque(queue2)
    Sum1, Sum2 = sum(q1), sum(q2)
    
    for _ in range(len(q1)*3) :
        if Sum1 == Sum2 : 
            return answer 
        if Sum1 > Sum2 :
            Sum1 -= q1[0]
            Sum2 += q1[0]
            q2.append(q1.popleft())
        else :
            Sum1 += q2[0]
            Sum2 -= q2[0]
            q1.append(q2.popleft())
        answer +=1

    return -1

 

1. 덱으로 만든다.

2. 각각의 sum을 구한다.

3. sum을 3가지의 경우로 구분한다.

3-1. 같은 경우 : answer을 return 

3-2. sum1 > sum2 : sum1에서 빼서 sum2에 넣어준다.

3-3. sum1 < sum2 : sum2에서 빼서 sum1에 넣어준다. 

 

 

 

 

 

 

다른건 다 생각할 수 있어도 

왜 for문이 len(q1) *3 인지 이해가 안간다.

len(q1) *2  만 해도 충분하지 않나?

 

 

https://velog.io/@ynoolee/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%91%90-%ED%81%90-%ED%95%A9-%EA%B0%99%EA%B2%8C-%EB%A7%8C%EB%93%A4%EA%B8%B0

 

여기 들어가보면 반례가 있다.

len()*2를 해도 안되면 3을 해야하는 구나 라고 생각하자

 

 

 

 

 

 

 

 

참고 블로그 : 

https://velog.io/@isayaksh/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-Programmers-%EB%91%90-%ED%81%90-%ED%95%A9-%EA%B0%99%EA%B2%8C-%EB%A7%8C%EB%93%A4%EA%B8%B0-Python

 

[알고리즘] Programmers 두 큐 합 같게 만들기 #Python

알고리즘 Programmers 두 큐 합 같게 만들기 #Python

velog.io

 

 

 

반응형