**Ruby**
빠른 둘로 가장 느린 둘을 이동시키는 시간을 한 사이클로 두면 수식으로 일반화 가능(홀/짝 두가지). f1,f2. 최초 입력값 정렬한 뒤 수식에 대입.
a,b를 가장 빠른 둘, rest를 나머지라 할 때, 전체이동시간 = (f1 x 단독a*이동횟수) + (f2 x 단독b*이동횟수) + (느린 2명이멤버 둘씩 이동하는 시간의 총합)
```{.ruby}
sum = ->f1,f2,rest { f1*(rest.a,b,rest,size { a*(size+1)/2 + f2*(rest.b*(size+1 - rest.size%2) +
rest.reverse.each_slice(2).map(&:first).reduce(:+) }
time = ->stdt { stdt.size > 2 ? sum[*stdt.shift(2), stdt] : stdt[-1] }
safe_time = ->input { time[input.split.map(&:to_i).drop(1).sort] }sum }
safe_time = ->times { a,b,*rest = times.split.map(&:to_i).drop(1).sort
rest[0] ? sum[a,b,rest,rest.size] : b || a }
```
**Test**
```{.ruby}
expect( safe_time["2 15 5"] ).to eq 15
expect( safe_time["4 1 2 7 10"] ).to eq 17
expect( safe_time["5 12 1 3 8 6"] ).to eq 29
```
**Output**
```{.ruby}
#=> puts safe_time["4 1 2 7 10"]
17
```
**Ruby**
빠른 둘로 가장 느린 둘을 이동시키는 시간을 한 사이클로 두면 수식으로 일반화 가능(홀/짝 두가지). f1,f2. 최초 입력값 정렬한 뒤 수식에 대입.
a,b를 가장 빠른 둘, rest를 나머지라 할 때, 전체이동시간 = (f1 x 단독a*이동횟수) + (f2 x 단독b*이동횟수) + (느린 2명이멤버 둘씩 이동하는 시간의 총합)
```{.ruby}
sum = ->f1,f2,rest { f1*(rest.a,b,rest,size { a*(size+1)/2 + f2*(rest.b*(size+1 - rest.size%2) +
rest.reverse.each_slice(2).map(&:first).reduce(:+) }
time = ->stdt { stdt.size > 2 ? sum[*stdt.shift(2), stdt] : stdt[-1] }
safe_time = ->input { time[input.split.map(&:to_i).drop(1).sort] }sum }
safe_time = ->times { a,b,*rest = times.split.map(&:to_i).drop(1).sort
rest[0] ? sum[a,b,rest,rest.size] : b || a }
```
**Test**
```{.ruby}
expect( safe_time["2 15 5"] ).to eq 15
expect( safe_time["4 1 2 7 10"] ).to eq 17
expect( safe_time["5 12 1 3 8 6"] ).to eq 29
```
**Output**
```{.ruby}
#=> puts safe_time["4 1 2 7 10"]
17
```