키위쥬스
------------------------------------------------------------------------------------------------------------------------------------------------------------
타로는 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번째 병에 남아 있는 키위 주스의 양입니다.
[정의 : 클래스와 함수 정의]
Class : KiwiJuiceEasy
Java : public int[] thePouring(int[] capacities, int[] bottles, int[] fromId, int[] toId)
[제약조건 : 매개변수 범위]
capacities -> 2~50개의 요소가 있는 배열입니다. 각 요소는 1~1000000 사이의 값을 갖습니다.
bottles -> capacities와 같은 수의 요소가 있는 배열입니다. bottles[i]는 capacities[i]에 들어 있는 주스를 의미합니다.
fromId -> 1~50개의 요소가 있는 배열입니다.
toId -> fromId와 같은 수의 요소가 있는 배열입니다.
변수 fromId와 toId는 0~(N-1) 사이의 값입니다. 이때 N은 변수 capacities의 항목 개수입니다. 변수 fromId[i]와 toId[i]는 서로 다른 값을 갖습니다.
[예시 : 입력 데이터와 출력 데이터]
1. capacities = {20, 20}
bottles = {5,8}
fromId = {0}
toId = {1}
Returns :{0, 13}
2. capacities = {10, 10}
bottles = {5,8}
fromId = {0}
toId = {1}
Returns : {3,10}
3. capacities = {30, 20,10}
bottles = {10, 5,5}
fromId= {0,1,2}
toId = {1,2,0}
Returns : {10,10,0}
4. capacities = {14,35,86,58,25,62}
bottles = {6, 34, 27, 38, 9, 60}
fromId = {1,2,4,5,3,3,1,0}
toId ={0,1,2,4,2,5,3,1}
Returns : {0,14,65,35,25,35}
스칼라 언어로 프로그램 하시오
-----------------------------------------------------------------[Answer]------------------------------------------------------------------------------------
무언가 좀 더 깔삼한 방법이 있을 것 같지만...
일단 우선 적으로 만든 것(Scala)
------------------------------------------------------------[Answer2]---------------------------------------
if 문은 적게 쓸수록 좋다 그거는 프로그래머라면 다들 알고 있는 상식!!
이건 내가 한 것이 아니다...
결국은 수학적 사고 방식이 필요 한 것인가...
때론 단순한게 좋지만...
Input이 크지 않는 데이터라면 속도 차이는 거의 없다고 봐도 무방하지만
Input이 커질수록 if문이 있고 없고의 차이는 크다...
하지만 무엇이 딱 옳다고 말 할 수는 없는 것 같다.
코드는 줄일 수 있다면 좋지만 그 만큼 가독성이 떨어지기도 하니 말이다..