#python #anaconda #jupyter-notebook #visual-code #html #css #javascript #http

제목작년중간고사 SWCON104-00 1번 예시답안 및 해설입니다.2019-10-16 23:15
작성자

#문제 순서대로 푸는 예시입니다. 순서대로 안풀면 더 쉽고, 이 풀이보다 분명히 더 좋은 방식도 존재합니다


def mergeAndSortList(list_a,list_b):
    sum = list_a + list_b
    endlist = len(sum)-1
    #중복값을 빼주면 list 길이도 달라져 반복횟수도 달라진다. 그것을 위해 만든 변수
    #list의 마지막 index를 가리킨다

    index = 0
    #list의 처음부터 올라가는 수
#그냥 index라고 보면 된다.

    while index != endlist:
        #인덱스가 list의 마지막에 도달하면 중단
        repeatstr = sum[index] #그 자리의 문자나 숫자를 저장
        repeatnum = sum.count(repeatstr) # 그 문자의 반복횟수 저장
        if repeatnum > 1#1번이상 반복되면
            for i in range(repeatnum - 1): #총 반복횟수보다 1번 적게
                sum.remove(repeatstr)# 제거한다.
                #remove같은 경우 앞에것부터 제거한다. 그럼 그 index자리에 다른 값이 오게 되는데
                #이 때 index를 +1해주면 그 값은 비교하지 않고 넘어가버린다.
                endlist -= 1 #그래서 여기서는 list길이가 1 줄었다는 것만 한다.
        else:
            index += 1 #위와 달리 반복되는게 없으므로 index를 올려준다.
    sum.sort()#반복이 끝나면 sort해준다
    return sum


#밑의 코드는 확인용 코드(답을 제출 시 이것까지 제출하면 안됨!)

a=[1,5,1,2,5,2,6,7,33,1]
b=[1,77,6,33]
c = mergeAndSortList(a,b)
print(c)

#만약 remove때문에 이해가 안가시면 help(list.remove)를 쳐서 읽어보시길 바랍니다.



틀린부분 있으면 피드백 부탁드립니다.

댓글