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

 

프로그래머스

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

programmers.co.kr


내 풀이

 

from collections import deque

def solution(queue1, queue2):
    q1 = deque(queue1)
    q2 = deque(queue2)
    sumq1= sum(q1)
    target = (sum(q1) + sum(q2)) /2
    count=0
    
    while q1 and q2:
        if sumq1 == target:  
            return count
        elif sumq1 > target:  
            sumq1 -= q1.popleft()
        else:  
            q1.append(q2.popleft())
            sumq1 += q1[-1]
            
        count += 1

    return -1

deque를 이용한 평범한 풀이다. 

최초에는 sumq를 이용하지 않고 매번 sum을 구해줘서 했는데 그러니까 시간초과가 나더라.

그래서 따로 구해주고 +-만 해줬다.

다른 풀이를 보니까 q1 q2 둘다 append pop해줬던데 그럴필요없이 비교할 하나만 정해서

비교군이 타겟보다 크면 비교군에만 빼주고 다른 한쪽은 가만히 두는게 더 나은거 같다.

 


다른사람의 풀이

from collections import deque

def solution(queue1, queue2):
    qu_1 = deque(queue1)
    qu_2 = deque(queue2)
    sum_1 = sum(qu_1)
    sum_2 = sum(qu_2)

    for i in range(len(queue1) * 3):
        if sum_1 == sum_2:
            return i
        if sum_1 > sum_2:
            num = qu_1.popleft()
            qu_2.append(num)
            sum_1 -= num
            sum_2 += num
        else:
            num = qu_2.popleft()
            qu_1.append(num)
            sum_2 -= num
            sum_1 += num
    return -1

 


https://dev-dain.tistory.com/228

 

[Python3] 프로그래머스 lv2. 118667 두 큐 합 같게 만들기

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

dev-dain.tistory.com


최초에 코테칠때 이 두문제 풀고나니 시간을 다써서 아무것도 못했었던 기억이난다..

발전을 하긴하는거같다 이 두문제 풀고나니까 동기부여를 조금 받은거 같다

이 두문제처럼 아주 어려운 문제들도 나중에 보면 그땐 그랬지 할 수 있었으면 한다.

'취준 > 프로그래머스' 카테고리의 다른 글

주차 요금 계산 - 파이썬  (0) 2022.09.09
캐시 - 파이썬  (0) 2022.09.08
성격 유형 검사하기 - 파이썬  (0) 2022.08.31
배달 - 파이썬  (0) 2022.07.27
괄호 회전하기 - 파이썬  (0) 2022.07.25

+ Recent posts