더북(TheBook)

icon_cakewalk 프로그램 15-1

 

모든 친구를 찾는 알고리즘

 

◉ 예제 소스 p15-1-friend.py

# 친구 리스트에서 자신의 모든 친구를 찾는 알고리즘

# 입력: 친구 관계 그래프 g, 모든 친구를 찾을 자신 start

# 출력: 모든 친구의 이름

 

def print_all_friends(g, start):

 

    qu = []       # 기억 장소 1: 앞으로 처리해야 할 사람들을 큐에 저장

    done = set()  # 기억 장소 2: 이미 큐에 추가한 사람들을 집합에 기록(중복 방지)

 

    qu.append(start)    # 자신을 큐에 넣고 시작

    done.add(start)     # 집합에도 추가

 

    while qu:           # 큐에 처리할 사람이 남아 있는 동안

        p = qu.pop(0)   # 큐에서 처리 대상을 한 명 꺼내

        print(p)        # 이름을 출력하고

        for x in g[p]:  # 그의 친구들 중에

            if x not in done:  # 아직 큐에 추가된 적이 없는 사람을

                qu.append(x)   # 큐에 추가하고

                done.add(x)    # 집합에도 추가

 

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.