less than 1 minute read

Weired Thanos 문제

주어진 숫자들을 오름차순 정렬하여 반을 날리고 반만 출력하는 문제이다.

2024_Algo_Assignment02

문제 해결

  1. 여러가지 정렬 알고리즘들이 있지만 삽입 정렬을 통해 간단하게 오름차순 정렬을 할 수 있다. 비교할 숫자의 인덱스를 기준 key로 삼고 이보다 큰 값이 있을 시 오른쪽으로 이동하면서 저장하는 방식이다.

  2. 오름차순 정렬이 되었다면 이제 남은 것은 총 길이의 /2를 하여 반으로 줄인다음 이후 인덱스부터 출력하면 된다.

image

완성 코드

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