https://wikidocs.net/7031

   위 사이트의 129번 문제입니다!

사이트에서 제시한 정답을 바로 생각하기는 했는데, 정답이랑 다르게 해보고 싶어서 고심하고 고심해서 이상하고 못생긴 코드 만들어 봤습니다!

제가 넣은 예제들로는 정상적으로 작동하기는 하나, 제가 생각해도 너무 부족하고 모자른 점이 많은 것 같아서 조언 부탁 드리겠습니다!

코드 첨부 하겠습니다!


-------------------------------------------------------------------------------------------------------


주민번호 = input("주민번호를 입력하세요:") #주민번호 입력

앞자리 = 주민번호.split("-")[0] #821010  // 앞자리 분류

뒷자리 = 주민번호.split("-")[1][0:6] #163521 // 뒷자리 분류 원본:1635210

끝자리 = 주민번호.split("-")[1][-1] #0  //주민번호 끝자리 분류


sum = 0 #연산에 이용할 변수


for i in range(len(앞자리)): #앞자리 주민번호 각각 2,3,4,5,6,7 곱하고 모두 더하는 반복문

    sum += (i+2)*int(앞자리[i])


backnum = 7 #뒷자리 곱셈에 사용할 변수


for i in range(len(뒷자리)): #마지막 숫자를 제외, 주민번호 뒷자리 각각 8,9,2,3,4,5 곱하고 더하는 반복문

    backnum += 1

    if backnum > 9:

        backnum = 2

    sum += backnum * int(뒷자리[i]) 



sum = 11- (sum%11) #1차계산 2차계산 값


if sum == int(끝자리): #끝자리와 내가 계산한 수의 일의자리가 일치하면 유효한 주민번호

    print("유효한 주민번호 입니다.")

elif(sum>9):

    if str(sum)[1] == 끝자리:

        print("유효한 주민번호 입니다.")

    else:

        print("유효하지 않은 주민등록번호입니다. ")

else:

    print("유효하지 않은 주민등록번호입니다. ")


------------------------------------------------------------------------------------------------------

예제가 주변 사람들 주민번호라 예제 첨부 못하는건 양해 부탁 드립니다!

아직 너무나도 부족한 점이 많아, 이 코드를 작성하는 것도 한두시간 걸렸습니다.. 한 곳에서 막히면 그 줄에서 꽤 오랜 시간이 걸리네요..

제가 생각해도 

for i in range(len(뒷자리)): #마지막 숫자를 제외, 주민번호 뒷자리 각각 8,9,2,3,4,5 곱하고 더하는 반복문

    backnum += 1

    if backnum > 9:

        backnum = 2

    sum += backnum * int(뒷자리[i]) 

이 코드를 너무 어거지로 짠 거 같다고 생각됩니다..


조언 해주시면 달게 받겠습니다! 감사합니다!