본문 바로가기
자료구조

연습문제와 응용예제

by Benihs 2022. 10. 7.
728x90
반응형

 1  연습문제

** 문제는 처음에 언급한 책에 나와있습니다 **

 

1. 선형 리스트

2. 1번

3. 4 - 2 - 3 - 1

4. katok.append(None)

5.del(katok[7])

6. 4 - 2 - 3 - 1

7. 4번

8. 4번

 

 2  응용예제 01

카톡 친구 이름과 카톡 횟수를 입력하면 자동으로 위치를 찾아 삽입하는 프로그램이다. 카톡 초기 정보는 ('친구이름', 연락횟수) 튜플 리스트로 시작한다.

## 함수 선언 부분 ##
def find_and_insert_data(friend, k_count) :
    findPos = -1
    for i in range(len(katok)) :
        pair = katok[i]
        if k_count >= pair[1] :
            findPos = i
            break
    if findPos == -1 :
        findPos = len(katok)
        
    insert_data(findPos, (friend, k_count))


def insert_data(position, friend) :
    
    if position < 0 or position > len(katok) :
        print("데이터를 삽입할 법위를 벗어났습니다")
        return
    
    katok.append(None) #빈칸 추가
    KLen = len(katok) #배열의 현재 크기
    
    for i in range(KLen-1,position, -1) :
        
        katok[i] = katok[i-1]
        katok[i-1]=None
        
    katok[position] = friend #지정한 위치에 친구 추가
    
katok = [('다현', 200), ('정연', 150), ('쯔위', 90), ('사나', 30), ('지효', 15)] 

if __name__ == "__main__" :
    while True :
        data = input("추가할 친구-->")
        count = int(input("카톡 횟수-->"))
        find_and_insert_data(data, count)
        print(katok)

 

 3  응용예제 02

특수 다항식의 선형 리스트 표현과 계산 프로그램에서 차수 배열과 계수 배열을 2차원 배열로 저장한 후 결과가 동일하게 나오도록 한다.

## 함수 선언 부분 ##
def printPoly(p_x) :
    polyStr = "P(x) = "
    
    for i in range (len(px[0])) :
        term = p_x[0][i]
        coef = p_x[1][i]
        
        if(coef >= 0) :
            polyStr += "+"
            polyStr += str(coef) + "x^" + str(term) + " "
        
    return polyStr

def calcPoly(xVal, p_x) :
    retValue = 0
    
    for i in range (len(p_x[0])) :
        term = p_x[0][i]
        coef = p_x[1][i]
        retValue += coef * xValue ** term

    return retValue

px = [[300, 20, 0],
      [7, -4, 5]]

if __name__ == "__main__" :
    
    pStr = printPoly(px)
    print(pStr)
    
    xValue = int(input("X 값-->"))
    
    pxValue = calcPoly(xValue, px)
    print(pxValue)
728x90
반응형