Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 인스타
- 1주차(1)
- 도커
- 참고X
- 4장
- python기본
- 스택
- 자료구조
- 운체 1주차
- DP
- python자료형
- git 오류
- 백준
- #코린이 #코딩 #할 수 있다
- 파이썬 알고리즘 인터뷰
- c언어 기본
- python기초
- 그리디
- 최단거리
- 코딩테스트
- Git
- Workbench
- 5장
- 데베시 1주차
- 인텔리제이
- git기초
- c언어
- c언어 제어문
- git오류
- 코테
Archives
- Today
- Total
하루살이 개발자
[프로그래머스] Lv2. 두 큐 합 같게 만들기(by Python) - 카카오 2번 문제 본문
문제
코딩테스트 연습 - 두 큐 합 같게 만들기 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
어렵지 않은 문제
- 각 배열의 합과, 목표값인 (두 개 배열 합) / 2를 구한다.
- 각 배열을 deque에 넣어 큐로 만든다.
- while문으로 하나의 배열이 목표값에 도달할 때 까지 반복한다.
- while문 반복 횟수가 (하나의 큐의 길이) * 4와 같아지면, 이 케이스는 반으로 나눠질 수 없으니 -1리턴
- why? (queue1 모두 pop 갯수) + (queue2 모두 pop 갯수) + (queue1과 queue2서로 pop&append)
- queue1의 합이 queue2의 합보다 작으면, queue2에서 pop하여 queue1에 넣어준다.
- queue1의 합이 queue2의 합보다 크면, queue1에서 pop하여 queue2에 넣어준다.
- 단, 큐가 달라질 때마다 sum함수를 사용하면 시간초과난다. (sum함수의 시간복잡도는 O(n)이므로)
- 각 큐의 sum을 먼저 구한 후, pop하면 -, append하면 +로 단순 더하기 빼기로 계산한다.
- while문 반복 횟수가 (하나의 큐의 길이) * 4와 같아지면, 이 케이스는 반으로 나눠질 수 없으니 -1리턴
코드
from collections import deque
def solution(queue1, queue2):
sum1 = sum(queue1)
sum2 = sum(queue2)
queue1 = deque(queue1)
queue2 = deque(queue2)
total = sum1 + sum2
half = total // 2
count = 0
len_queue = len(queue1)
while True:
if count == len_queue * 4:
return -1
if sum1 < half:
target = queue2.popleft()
sum1 += target
sum2 -= target
queue1.append(target)
elif sum1 == half:
break
else:
target = queue1.popleft()
sum1 -= target
sum2 += target
queue2.append(target)
count += 1
return count
[카카오 코테 공식 해설]
https://tech.kakao.com/2022/07/13/2022-coding-test-summer-internship/
2022 테크 여름인턴십 코딩테스트 해설
2022년 카카오 여름 인턴십 코딩 테스트가 지난 5월 7일에 5시간에 걸쳐 진행되었습니다. 시간이 부족하여 문제를 풀지 못하는 아쉬움이 없도록 1시간을 늘려 테스트를 진행한 것이 작년과 조금
tech.kakao.com
'코딩테스트' 카테고리의 다른 글
[프로그래머스] Lv2. 숫자 변환하기(by Python) (0) | 2023.05.25 |
---|---|
[프로그래머스] Lv2. 택배상자(by Python) (0) | 2023.05.25 |
[프로그래머스] Level4 DP문제(by Python) (0) | 2023.04.15 |
[백준] 19236 청소년 상어 (by Python) (0) | 2023.03.22 |
[백준] 13458 시험 감독 (by Python) (0) | 2023.03.20 |