1. 서론
파이썬 알고리즘 풀이 2일차.
강의는 '모두의 알고리즘 with 파이썬'이다.
챌린지를 진행한지도 2주가 지났다. 오늘도 분발.
2. 문제
동명이인을 찾는 알고리즘
동명이인을 찾는 알고리즘을 만들어 봅시다.
- 첫 번째 Tom을 뒤에 있는 Jerry, Mike, Tom과 차례로 비교합니다.
- 첫 번째 Tom과 마지막 Tom이 같으므로 동명이인입니다(동명이인: Tom).
- 두 번째 Jerry를 뒤에 있는 Mike, Tom과 비교합니다(앞에 있는 Tom과는 이미 비교했음).
- 세 번째 Mike를 뒤에 있는 Tom과 비교합니다.
- 마지막 Tom은 비교하지 않아도 됩니다(이미 앞에서 비교했음).
- 같은 이름은 Tom 하나뿐입니다.
이 알고리즘에서 주의할 점은 다음과 같습니다.
- 이번에 비교할 이름을 뽑은 다음에는 뽑은 이름보다 순서상 뒤에 있는 이름하고만 비교하면 됩니다.
자기 자신과 비교하는 것은 무의미하고 앞에 있는 이름과는 이미 비교가 끝났기 때문입니다. - 리스트의 마지막 이름을 기준으로는 비교하지 않아도 됩니다.
자신의 뒤에는 비교할 이름이 없고, 앞과는 이미 비교가 끝났기 때문입니다. - 같은 이름을 찾으면 결과 집합에 그 이름을 추가합니다.
1. 리스트 변수 a을 입력받아 집합을 비교하여 이름이 같을 경우 변수 result에 저장하여 반환하는 함수 find_same_name을 작성하세요. set()를 사용하여 빈 집합을 생성해 변수 result에 먼저 저장해주어야 합니다.
2. 함수 find_same_name에 리스트 name을 넣어 출력하세요.
3. 함수 find_same_name에 리스트 name2를 넣어 출력하세요.
풀이
def find_same_name(a):
result = set()
n = len(a)
for i in range(n - 1):
for j in range(i + 1, n):
if a[i] == a[j]:
result.add(a[i])
return result
name = ["Tom", "Jerry", "Mike", "Tom"]
name2 = ["Tom", "Jerry", "Mike", "Tom", "Mike"]
print(find_same_name(name))
print(find_same_name(name2))
'기타 > 엘카데미' 카테고리의 다른 글
[엘카데미 챌린지] 17일차 파이썬 알고리즘 (4) (0) | 2023.08.03 |
---|---|
[엘카데미 챌린지] 16일차 파이썬 알고리즘 (3) (0) | 2023.08.02 |
[엘카데미 챌린지] 14일차 파이썬 알고리즘 (1) (0) | 2023.07.30 |
[엘카데미 챌린지] 13일차 생활코딩 자바스크립트 (3) (0) | 2023.07.30 |
[엘카데미 챌린지] 12일차 생활코딩 자바스크립트 (2) (0) | 2023.07.28 |