Skip to content

Commit a2cd1ed

Browse files
committed
solve: 프로그래머스 문제 풀이 - 9일차
1 parent 48af654 commit a2cd1ed

3 files changed

Lines changed: 120 additions & 0 deletions
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import java.util.*;
2+
3+
class Solution {
4+
public int solution(int[] queue1, int[] queue2) {
5+
6+
long total = 0;
7+
int size = queue1.length;
8+
long sum1 = 0;
9+
long sum2 = 0;
10+
for (int i=0; i<size; i++) {
11+
sum1 += queue1[i];
12+
sum2 += queue2[i];
13+
}
14+
15+
total = sum1 + sum2;
16+
if (total % 2 != 0) return -1;
17+
long target = total / 2;
18+
19+
Queue<Integer> q1 = new LinkedList<>();
20+
Queue<Integer> q2 = new LinkedList<>();
21+
for (int i=0; i<size; i++) {
22+
q1.offer(queue1[i]);
23+
q2.offer(queue2[i]);
24+
}
25+
26+
int moveCount = 0;
27+
boolean isSuccess = false;
28+
while (moveCount <= 3*size) {
29+
if (sum1 == target) {
30+
return moveCount;
31+
}
32+
33+
int move = 0;
34+
if (target < sum2) {
35+
move = q2.poll();
36+
q1.offer(move);
37+
sum1 += move;
38+
sum2 -= move;
39+
} else if (sum1 > target) {
40+
move = q1.poll();
41+
q2.offer(move);
42+
sum2 += move;
43+
sum1 -= move;
44+
}
45+
moveCount++;
46+
47+
}
48+
49+
return -1;
50+
}
51+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Solution {
2+
public int solution(int storey) {
3+
int answer = 0;
4+
5+
while (storey > 0) {
6+
int num10 = storey / 10;
7+
int num0 = storey % 10;
8+
if (num0 > 5) {
9+
num10 += 1;
10+
answer += 10 - num0;
11+
} else if (num0 < 5) {
12+
answer += num0;
13+
} else {
14+
if (num10 % 10 >= 5) {
15+
num10 += 1;
16+
}
17+
answer += num0; // 숫자 5
18+
}
19+
storey = num10;
20+
}
21+
22+
return answer;
23+
}
24+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
class Solution {
2+
public int[] solution(int[] sequence, int k) {
3+
int[] answer = {};
4+
5+
int size = sequence.length;
6+
int[] sum = new int[size + 1];
7+
8+
// 1 2 3 4 5
9+
// 0 1 3 6 10 15
10+
for (int i=1; i<=size; i++) {
11+
sum[i] = sum[i-1] + sequence[i-1];
12+
}
13+
14+
int start = 0;
15+
int end = 0;
16+
int left = 0;
17+
int minLen = size;
18+
for (int right = 0; right < size; right++) {
19+
while (left <= right) {
20+
int rangeSum = sum[right + 1] - sum[left];
21+
if (rangeSum == k) {
22+
int len = right - left + 1;
23+
if (len < minLen) {
24+
minLen = len;
25+
start = left;
26+
end = right;
27+
}
28+
++left;
29+
break;
30+
} else if (rangeSum > k) {
31+
left++;
32+
} else {
33+
break;
34+
}
35+
}
36+
}
37+
38+
/*
39+
for (int s: sum) {
40+
System.out.println(s + " ");
41+
}
42+
*/
43+
return new int[] { start, end };
44+
}
45+
}

0 commit comments

Comments
 (0)