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
- HTTP
- HyperTextMarkupLanguage
- 부모태그
- SpringBoot #JPA
- 중첩
- Homebrew
- calss
- 팀버너스리
- inline
- 속성
- HTML
- Terminal
- DOCTYPE
- Internal
- heda
- 속성값
- gitbash
- 자식태그
- 알고리즘
- HTML소개
- External
- 프로토콜
- meta
- Html공백
- 톰캣
- apache tomcat
- 배열
- HTML문법
- 백준
- GIT
Archives
- Today
- Total
STUDIO_54
키위 주스 KiwiJuice 본문
[문제]
타로는 맛있는 키위 주스를 준비했습니다. 타로는 0부터 N-1이라 이름을 붙인 N개의 병에 키위 주스를 넣었습니다. 이때 i번째의 병의 용량은 capacities[i] 리터이며 타로가 i번째 병에 넣은 키위 주스의 양을 bottle[i] 리터라고 합니다.
타로는 병에 키위 주스를 재분배하려고 하며, 0부터 M-1까지 M회 조작합니다. i번째의 조작은 타로가 병 fromId[i]부터 병 toId[i]에 키위 주스를 넣는 것을 의미합니다. 병 fromId[i]가 비어 있거나 병 toId[i]가 꽉 차 있는 순간, 타로는 더 이상 키위 주스를 넣지 않습니다.
N개의 요소를 가진 정수 배열 int[]를 리턴해 주세요. 배열의 i번째 요소는 모든 주스를 쏟는 작업이 완료되고 i번째 병에 남아 있는 키위 주스의 양입니다.
[문제 해설]
옮기는 작업은 크게 두 가지로 구분
- 주스를 모두 옮겼는데 넘치지 않고 전부 들어간 경우
- 주스를 모두 옮겼는데 넘쳐버린 경우
1. 주스를 모두 옮겼는데 넘치지 않고 전부 들어간 경우
옮길 주스의 양 <= 기존 주스 병의 남은 용량
- 이동량은 옮길 주스의 양
- 기존 주스 양에 이동량을 더한다.
- 옮길 주스에서 이동량을 뺀다.(옮길 주스를 비운다)
2. 주스를 모두 옮겼는데 넘쳐버린 경우
옮길 주스의 양 > 기존 주스 병의 남은 용량
- 이동량은 옮길 주스의 남은 용량
- 기존 주스의 남은 주스 양에 이동량을 더한다.(기존 주스의 병을 가득 채운다)
- 옮길 주스에서 이동량을 뺀다
[소스 코드]
package array;
class KiwiJuice {
public int[] thePouring(int[] capacities, int[] bottles, int[] fromId, int[] toId) {
for (int i = 0; i < fromId.length; i++) {
int f = fromId[i];
int t = toId[i];
int space = capacities[t] - bottles[t];
if (space >= bottles[f]) {
int vol = bottles[t];
bottles[t] += vol;
bottles[f] = 0;
}else {
int vol = space;
bottles[t] += vol;
bottles[f] -= vol;
}
}
return bottles;
}
}
'Algorithm 말 > 배열' 카테고리의 다른 글
[백준 no.2920] 음계 (0) | 2020.04.09 |
---|