Thanos problem
Weired Thanos 문제
주어진 숫자들을 오름차순 정렬하여 반을 날리고 반만 출력하는 문제이다.
문제 해결
-
여러가지 정렬 알고리즘들이 있지만 삽입 정렬을 통해 간단하게 오름차순 정렬을 할 수 있다. 비교할 숫자의 인덱스를 기준 key로 삼고 이보다 큰 값이 있을 시 오른쪽으로 이동하면서 저장하는 방식이다.
-
오름차순 정렬이 되었다면 이제 남은 것은 총 길이의 /2를 하여 반으로 줄인다음 이후 인덱스부터 출력하면 된다.
완성 코드
def insertion_sort(n, arr):
# 인덱스 0은 이미 정렬된 것으로 간주
for i in range(1, n):
key = arr[i] # 현재 삽입될 숫자인 i번째 요소를 key로 설정
# 현재 정렬된 배열은 i-1까지이므로 i-1부터 역순으로 조사
j = i - 1
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j] # 요소를 오른쪽으로 이동
j -= 1
arr[j + 1] = key # key 값을 알맞은 위치에 삽입
numbers = [5,6,4,2,7]
length = len(numbers)
insertion_sort(length, numbers)
half_length = length // 2
# 절반 만큼 삭제 (앞에서부터)
result = numbers[half_length:]
result = ''.join(map(str, result))
print(result)
567