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
- 백준 1103번 c++
- c++
- Lv.3
- 오브젝트 풀링
- 2468 c++
- 백준 17070번 c++
- Lv2
- 백준 17070번
- Algorithm
- dfs
- 코테
- 2870번 수학숙제
- 2870번 수학숙제 c++
- 17070번
- 백준 2870번
- 백준 c++ 2870번
- Unity
- 백준 c++ 2468번
- 수학숙제
- 백준 1103번 게임
- 유니티
- 2870번
- 백준 1103번
- 프로그래머스
- 플레이어 이동
- 백준
- Beakjoon
- C#
- 코딩테스트
- 2870번 c++
Archives
- Today
- Total
주녘공부일지
[프로그래머스 C#] Lv.2 두 큐 합 같게 만들기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/118667
1. 정답코드 및 핵심 아이디어, 유의사항
- int형 배열로 주어진 queue1, queue2를 실제로 Queue<int>에 넣어서 목표 숫자(총합 / 2)보다 작으면 다른 큐에서 받아오고, 크면 다른 큐로 내보내기를 반복
- 최대 이동 횟수는 모든 원소의 합 * 2 보다 낮을 것이며, 총합이 홀수일 경우 두 큐의 총합은 같을 수 없음
-> ( 최대 이동 횟수는 q1이 모든 원소를 주고 q2의 모든 원소를 받는 것을 두번 반복하여 다시 원래의 값이 되는 데에 필요한 이동 횟수보다 적을 것 )
- 매번 배열의 총합을 연산하기엔 비용이 많이 들기 때문에 각 queue의 총합 상태를 변수로 따로 관리함
https://godgjwnsgur7.tistory.com/46
주석 참조
using System;
using System.Collections.Generic;
public class Solution
{
public int solution(int[] queue1, int[] queue2)
{
int moveCount = 0; // 이동 횟수 ( q1 <-> q2 )
Queue<int> q1 = new Queue<int>();
Queue<int> q2 = new Queue<int>();
long sum1 = 0, sum2 = 0;
// 값 세팅
for (int i = 0; i < queue1.Length; i++)
{
q1.Enqueue(queue1[i]);
sum1 += queue1[i];
}
for (int i = 0; i < queue2.Length; i++)
{
q2.Enqueue(queue2[i]);
sum2 += queue2[i];
}
long target = sum1 + sum2; // 총합
// 총합이 홀수일 경우 q1, q2를 같게 만들 수 없음
if (target % 2 != 0)
return -1;
target /= 2; // 타겟 값 설정 (총합의 / 2)
// 최대 이동 횟수
int maxCount = (queue1.Length + queue2.Length) * 2;
while (moveCount < maxCount)
{
if (target == sum1)
return moveCount;
if (target > sum1)
{
int tempNum = q2.Dequeue();
q1.Enqueue(tempNum);
sum1 += tempNum;
moveCount++;
}
else // target < sum1
{
int tempNum = q1.Dequeue();
q2.Enqueue(tempNum);
sum1 -= tempNum;
moveCount++;
}
}
return -1;
}
}
'CodingTest > Programmers Lv.2' 카테고리의 다른 글
[프로그래머스 C#] Lv.2 무인도 여행 (0) | 2023.11.15 |
---|---|
[프로그래머스 C#] Lv.2 다리를 지나는 트럭 (0) | 2023.11.14 |
[프로그래머스 C#] Lv.2 할인 행사 (0) | 2023.11.12 |
[프로그래머스 C#] Lv.2 요격 시스템 (0) | 2023.11.09 |
[프로그래머스 C#] Lv.2 두 원 사이의 정수 쌍 (0) | 2023.11.07 |