중복되는항목찾기I.py
def find_same_number(some_list):
# 여기에 코드를 작성하세요
seen_element = []
for i in range(len(some_list)):
seen_element.append(some_list[i])
if some_list[i+1] in seen_element:
return some_list[i+1]
# 중복되는 수 ‘하나’만 리턴합니다.
print(find_same_number([1, 4, 3, 5, 3, 2]))
print(find_same_number([4, 1, 5, 2, 3, 5]))
print(find_same_number([5, 2, 3, 4, 1, 6, 7, 8, 9, 3]))
해결과정
먼저 Brute Force 를 이용해 모든 리스트에 조합을 다 확인하면 쉽게 답을 구할 수 있다.
def find_same_number(some_list):
# 가능한 모든 조합을 다 돌면서 반복 요소가 있는지 확인하고 있으면 해당 요소를 리턴한다
for i in range(len(some_list)):
for j in range(i + 1, len(some_list)):
if some_list[i] == some_list[j]:
return some_list[i]
print(find_same_number([1, 1, 1, 6, 2, 2, 3]))
하지만 문제의 조건이 시간 효율적인 함수를 작성하는 것이여서 O(n^2)은 그다지 효율적인 방법은 아니다.
이미 나온 여러개의 요소를 저장할 수 있는 방법이 뭐가 있을까?
여러개의 요소를 저장할 수 있게 리스트를 만들고, 조건문을 이용해서 미리 리스트안에 값이 있으면 return해주는 조건을 만들었다.
def find_same_number(some_list):
# 이미 나온 요소를 저장시켜줄 리스트
seen_element = []
for i in range(len(some_list)):
# 해당 요소를 리스트에 저장시킨다.
seen_element.append(some_list[i])
# 이미 나온 요소이면 요소를 리턴
if some_list[i+1] in seen_element:
return some_list[i+1]
print(find_same_number([1, 4, 3, 5, 3, 2]))
print(find_same_number([4, 1, 5, 2, 3, 5]))
print(find_same_number([5, 2, 3, 4, 1, 6, 7, 8, 9, 3]))
'Algorithm > 코딩테스트 스터디' 카테고리의 다른 글
투자 귀재 규식이 III (0) | 2023.08.01 |
---|---|
투자 귀재 규식이 II (0) | 2023.08.01 |
빠르게 산 오르기 (0) | 2023.07.27 |
거듭 제곱 빠르게 계산하기 (0) | 2023.07.26 |
투자 귀재 규식이 I (0) | 2023.07.26 |