9440_숫자 더하기

임정우·2023년 1월 12일

코딩테스트

목록 보기
2/10

리스트를 받으면 큰 순으로 번갈아가며 끝에서부터 두 숫자에 붙힌다.
큰 순으로만 붙힌다면 순서는 상관없다.
0을 처리할 때는
길이가 짧은 것부터 0을 붙히는데, 0은 2번째 자리에, index로 치면 1번 index에 붙힌다.
짧은 것부터 붙히는 이유는 123, 24가 있고 0이 3개 있다고 할때 긴 것부터 붙히면 10023, 204가 되고
짧을 것부터 붙히면 1023 2004가 되어 후자가 더 작다.
어느 언어나 나는 문자열 처리를 잘 못해서 코드가 깔끔하지는 않다

while True:
    numlist = list(map(int, input().split()))
    
    if (len(numlist) == 1) & (numlist[0] == 0):
        break
    num1 = ""
    num2 = ""
    del numlist[0]
    
    numlist.sort(reverse=True)
    zerolist = []
    while len(numlist) != 0:
        if numlist[0] == 0:
            zerolist.append(0)
            del numlist[0]
            continue
        num1 = num1.split()
        num1.insert(0,str(numlist[0]))
        num1 = ''.join(num1)
        del numlist[0]
        
        if len(numlist) != 0:
            if numlist[0] == 0:
                zerolist.append(0)
                del numlist[0]
                continue
            else:
                num2 = num2.split()
                num2.insert(0,str(numlist[0]))
                num2 = ''.join(num2)
                del numlist[0]
    
    
    while len(zerolist) != 0:
        num2 = list(num2)
        num2.insert(1,str(zerolist[0]))
        num2 = ''.join(num2)
        del zerolist[0]
       
        if len(zerolist) != 0:
            
            num1 = list(num1)
            num1.insert(1,str(zerolist[0]))
            num1 = ''.join(num1)
            del zerolist[0]
            
    print(int(num1)+int(num2))
profile
경희대학교 소프트웨어융합학과

0개의 댓글