진취적 삶

3 동명이인 찾기 본문

개발 도서/모두의 알고리즘 WITH 파이썬

3 동명이인 찾기

hp0724 2023. 7. 7. 10:57

입력은 n 명의 이름이 들어있는 리스트

결과는 이름들이 들어있는 집합

집합은 중복 제거 가능

#  중복 이름 찾기 
# 1. 비교 
def find_same_name(array) :
    original=[]
    duplicate=[]
    for i in array:
        if i not in original: # 처음 
            original.append(i)
        else : # 중복 될 경우 
            if i not in duplicate: #duplicate 배열에 없으면 넣기 
                duplicate.append(i)
    return duplicate

print(find_same_name(["tom","jerry","mike","tom"]))
def find_same_name2(array):
    num=len(array)
    result = set()
    for i in range(0,num-1): # 0부터 num-2 까지 반복 
        for j in range(i+1,num):  # i+1부터 n-1까지 반복 
            if(array[i]==array[j]):
                result.add(array[i])
    return result            

print(find_same_name2(["tom","jerry","mike","tom"]))

시간복잡도 O(N제곱)

연습문제

# 두명을 뽑아 짝을 짓는다. 모든 조합을 출력하는 알고리즘 
# 앞에랑 뒤에만 뽑아서 출력 
def make_partner(array) :
    length=len(array)
    for i in range(0,length):
        for j in  range(i+1,length):
            print(array[i] + ' - ' +array[j])

make_partner(['Tom','Jerry','Mike'])

시간복잡도

65536 = O(1)

n-1 = O(n)

2N(2)/3 +10000n = O(n2)

'개발 도서 > 모두의 알고리즘 WITH 파이썬' 카테고리의 다른 글

9 삽입 정렬  (0) 2023.07.07
0절대값 구하기  (0) 2023.07.07
1 1부터 n까지의 합 구하기  (0) 2023.07.07
2 최대값 찾기  (0) 2023.07.07
4 팩토리얼 구하기  (0) 2023.07.07