🟨 나의 풀이
class Solution {
public int solution(int[] cookie) {
int answer = 0;
for(int i=0; i < cookie.length-1; i++){
int left = i;
int right = i + 1;
int left_total = cookie[i];
int right_total = cookie[i + 1];
while (true) {
if (left_total == right_total) {
answer = Math.max(answer, left_total);
}
if (left_total >= right_total && right < cookie.length - 1) {
right += 1;
right_total += cookie[right];
}else if(left_total < right_total && left > 0) {
left -= 1;
left_total += cookie[left];
}else{
break;
}
}
}
return answer;
}
}
기준점은 0 ~ cookie의 개수 -1까지다.
인덱스 범위 안에서 전체를 탐색한다.
쿠키가 더 작은 쪽에 쿠키를 준다.
⚠️ 주의할 점
- if (left_total > right_total && right < cookie.length - 1)로 하면 안 된다.
- 만약 초기 left_total과 right_total이 같으면, if (left_total == right_total)이 실행된 후 break하고 끝난다.
- 배열 전체를 탐색해야 한다 !!!
# 실패
def solution(cookie):
answer = -1
len_cookie = len(cookie)
for i in range(len_cookie - 1):
left_idx = i
right_idx = i + 1
left = 0
right = 0
while True:
if left_idx < 0 and right_idx >= len_cookie:
break
if left == right :
answer = max(answer, left)
if right_idx < len_cookie - 1 :
right_idx += 1
right += cookie[right_idx]
elif left_idx < -1 :
left_idx -= 1
left -= cookie[left_idx]
if left > right:
right_idx += 1
if right_idx <= len_cookie:
continue
right += cookie[right_idx]
elif left < right :
left_idx -= 1
if left_idx < 0:
continue
left += cookie[left_idx]
return answer
무한 루프에 빠졌다. 🫥
기준을 0부터 쿠키 갯수 -1까지 하고 합이 더 작은 쪽에 쿠키를 더 주게 구현하려고 했다.
정리 안하고 막 구현하면 안 된다.🙄
🟨 다른 사람 풀이
# https://deok2kim.tistory.com/125
def solution(cookie):
answer = 0
n = len(cookie)
for i in range(n - 1) :
left_sum, left_idx = cookie[i], i
right_sum, right_idx = cookie[i + 1], i + 1
while True :
if left_sum == right_sum :
answer = max(answer, left_sum)
if left_idx > 0 and left_sum <= right_sum :
left_idx -= 1
left_sum += cookie[left_idx]
elif right_idx < n - 1 and right_sum <= left_sum :
right_idx += 1
right_sum += cookie[right_idx]
else :
break
return answer
0부터 n-1까지 중심을 잡는다. ➡️ 두 형제가 쿠키 하나씩은 챙겨야 하니까~
왼쪽 쿠키 합과 오른쪽 쿠키 합이 같으면 answer을 갱신
쿠키 합이 더 작은 쪽에 다음 쿠키를 준다.
문제 출처 👇
https://school.programmers.co.kr/learn/courses/30/lessons/49995?language=python3
반응형
'coding test' 카테고리의 다른 글
[파이썬, Java] 인사고과 (0) | 2023.04.12 |
---|---|
[파이썬, Java] 호텔 방 배정 (0) | 2023.04.11 |
[파이썬] 부대복귀 (0) | 2023.04.11 |
[파이썬] 호텔 대실 (0) | 2023.04.10 |
[파이썬] 과제 진행하기 (0) | 2023.04.05 |