본문 바로가기

운동하는 개발자/알고리즘, 코딩테스트

HackerRank [Sorting] Insertion Sort - Part 2 /알고리즘 해커랭크

728x90

문제주소 : https://www.hackerrank.com/challenges/insertionsort2/problem

난이도 : easy
성공률 : 97.21%

 

문제 : 주어진 배열에서 순차적으로 열의 개수를 늘려가며 정렬 후 출력 정렬 후 출력 반복하라

 

풀이

1. 1번 인덱스와 0번 인덱스 비교 후 큰값을 오른쪽 하여 출력
2. 2번 인덱스와 1번인덱스 비교 후 1번이 크면 값 스왑 후 0번과 비교, 작으면 출력
이런식으로 뒤에서부터 앞으로 값 비교하여 스왑작업

 

답안

#!/bin/python3

import math
import os
import random
import re
import sys

def printList(arr):
    for i in range(0, len(arr)):
        print(arr[i], end='')
        print(' ', end='')    
    print('')

def insertionSort2(n, arr):
    for i in range(1, n):    
        nTempCnt = i+1
        
        for j in range(1, nTempCnt):
            if arr[nTempCnt-j] < arr[nTempCnt-j-1]:
                nSwap = arr[nTempCnt-j]
                arr[nTempCnt-j] = arr[nTempCnt-j-1]
                arr[nTempCnt-j-1] = nSwap
            else:
                break

        printList(arr)

if __name__ == '__main__':
    n = int(input())

    arr = list(map(int, input().rstrip().split()))

    insertionSort2(n, arr)

 

느낀점

더보기

독해하는데 10분 문제푸는데 5분..
쉬운문제들은 번역기 안돌리고 풀어보려고 하니 오히려 영어 스트레스가 더 받는다

처음엔 문제 이해하고 sort 함수 돌려서 값 이어붙이기 해서 출력할려고 했는데
알고리즘을 어떻게 짜라고 문제에 제시가 되어있었다

그대로 짜기만 하니 되었고 디버깅도 없이 그냥 코드짜고 실행해서 값 넣어보고 딱 한방에 끝냄


 

728x90