More actions
imported>Unknown No edit summary |
(Repair batch-0003 pages from live compare) |
||
| Line 5: | Line 5: | ||
class TugOfWar: | class TugOfWar: | ||
def solutionOfTwoRemain(self,numbers): | def solutionOfTwoRemain(self,numbers): | ||
if self.sum | if self.sum[0]==0: | ||
self.sum | self.sum[0]=numbers[0] | ||
self.sum | self.sum[1]=numbers[1] | ||
self.sum | self.sum[0]+=numbers[1] | ||
self.sum | self.sum[1]+=numbers[0] | ||
self.sum.sort() | self.sum.sort() | ||
def solutionOfOddNumber(self,numbers): | def solutionOfOddNumber(self,numbers): | ||
| Line 17: | Line 17: | ||
def calculateEachSum(self,numbers): | def calculateEachSum(self,numbers): | ||
self.solutionOfOddNumber(numbers) | self.solutionOfOddNumber(numbers) | ||
self.sum | self.sum[0]+=numbers[0]+numbers[len(numbers)-1] | ||
self.tmpSum | self.tmpSum[0]+=numbers[0]+numbers[len(numbers)-2] | ||
self.sum | self.sum[1]+=numbers[1]+numbers[len(numbers)-2] | ||
self.tmpSum | self.tmpSum[1]+=numbers[1]+numbers[len(numbers)-1] | ||
self.sum.sort() | self.sum.sort() | ||
self.tmpSum.sort() | self.tmpSum.sort() | ||
def compare(self): | def compare(self): | ||
if (self.tmpSum | if (self.tmpSum[1]-self.tmpSum[0])<(self.sum[1]-self.sum[0]): | ||
self.sum=self.tmpSum | self.sum=self.tmpSum | ||
def removeUsedNumber(self,numbers): | def removeUsedNumber(self,numbers): | ||
| Line 34: | Line 34: | ||
def coupling(self,numbers): | def coupling(self,numbers): | ||
self.sum= | self.sum=[0,0] | ||
self.tmpSum= | self.tmpSum=[0,0] | ||
numbers.sort() | numbers.sort() | ||
| Line 51: | Line 51: | ||
def setUp(self): | def setUp(self): | ||
self.exTugOfWar=TugOfWar() | self.exTugOfWar=TugOfWar() | ||
self.d1= | self.d1=[100,90,200] | ||
self.d2= | self.d2=[45,55,70,60,50,75] | ||
self.d3= | self.d3=[92,56,47,82] | ||
self.d4= | self.d4=[2,3,4,7,8] | ||
self.d5= | self.d5=[50,50,100,200] | ||
def testCoupling(self): | def testCoupling(self): | ||
self.assertEqual( | self.assertEqual([190,200],self.exTugOfWar.coupling(self.d1)) | ||
self.assertEqual( | self.assertEqual([175,180],self.exTugOfWar.coupling(self.d2)) | ||
self.assertEqual( | self.assertEqual([138,139],self.exTugOfWar.coupling(self.d3)) | ||
self.assertEqual( | self.assertEqual([12,12],self.exTugOfWar.coupling(self.d4)) | ||
self.assertEqual( | self.assertEqual([150,250],self.exTugOfWar.coupling(self.d5)) | ||
if __name__=='__main__': | if __name__=='__main__': | ||
unittest.main() | unittest.main() | ||
Latest revision as of 00:29, 27 March 2026
TugOfWar/남상협
- 괜히 엉성한거 디버그 하기보단 첨부터 다시 짜는게 다 나은거 같다.
import unittest
class TugOfWar:
def solutionOfTwoRemain(self,numbers):
if self.sum[0]==0:
self.sum[0]=numbers[0]
self.sum[1]=numbers[1]
self.sum[0]+=numbers[1]
self.sum[1]+=numbers[0]
self.sum.sort()
def solutionOfOddNumber(self,numbers):
if (len(numbers)%2)==1:
numbers.append(0)
numbers.sort()
def calculateEachSum(self,numbers):
self.solutionOfOddNumber(numbers)
self.sum[0]+=numbers[0]+numbers[len(numbers)-1]
self.tmpSum[0]+=numbers[0]+numbers[len(numbers)-2]
self.sum[1]+=numbers[1]+numbers[len(numbers)-2]
self.tmpSum[1]+=numbers[1]+numbers[len(numbers)-1]
self.sum.sort()
self.tmpSum.sort()
def compare(self):
if (self.tmpSum[1]-self.tmpSum[0])<(self.sum[1]-self.sum[0]):
self.sum=self.tmpSum
def removeUsedNumber(self,numbers):
for i in range(2):
if len(numbers)>0:
numbers.pop()
numbers.pop(0)
i+=1
def coupling(self,numbers):
self.sum=[0,0]
self.tmpSum=[0,0]
numbers.sort()
while len(numbers)>0:
if(len(numbers)==2):
self.solutionOfTwoRemain(numbers)
return self.sum
self.solutionOfOddNumber(numbers)
self.calculateEachSum(numbers)
self.compare()
self.removeUsedNumber(numbers)
return self.sum
class testTugOfWar(unittest.TestCase):
def setUp(self):
self.exTugOfWar=TugOfWar()
self.d1=[100,90,200]
self.d2=[45,55,70,60,50,75]
self.d3=[92,56,47,82]
self.d4=[2,3,4,7,8]
self.d5=[50,50,100,200]
def testCoupling(self):
self.assertEqual([190,200],self.exTugOfWar.coupling(self.d1))
self.assertEqual([175,180],self.exTugOfWar.coupling(self.d2))
self.assertEqual([138,139],self.exTugOfWar.coupling(self.d3))
self.assertEqual([12,12],self.exTugOfWar.coupling(self.d4))
self.assertEqual([150,250],self.exTugOfWar.coupling(self.d5))
if __name__=='__main__':
unittest.main()