# 3. APS/SWEA

SWEA # Python_D2_1966_숫자를 정렬하자 (버블소트) ✅

둥굴둥굴둥굴레차 2021. 2. 12. 18:54

 

👓 [문제]

 

주어진 N 길이의 숫자열을 오름차순으로 정렬하여 출력하라.

 

 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

# [input]
10
5
1 4 7 8 0
...

# [output]
0 1 4 7 8
...
import sys
sys.stdin = open("input.txt")

T = int(input())

# [테스트 케이스 T 만큼 for문 돌리자]
for tc in range(1, T + 1):
	
    # [숫자열의 길이를 N에 집어넣자]
    N = int(input())
    
    # [숫자열을 list로 바꾸어 numbers에 집어넣자]
    numbers = list(map(int, input().split()))
    
    # [범위의 끝자리를 지정하자]
    # N이 5일때, range의 범위는 4, 3, 2, 1!
    for i in range(N-1, 0, -1):
        # i가 4일때 j : 0, 1, 2, 3
        # i가 3일때 j : 0, 1, 2
        # ...

        # range(i)인 이유 : 만약 range(i+1)이 된다면 j+1은 5로서 존재하지 않는 인덱스 인데,
        # j가 4일 때 존재하지 않는 5번째 인덱스와 비교하려 들 것이고 
        # 결과적으로 인덱스 에러가 난다!
        for j in range(0,i):
            # [j]와 [j]보다 뒤에 있는 값인 [j+1]을 비교해준다.
            # ==>> 인덱스 0과 인덱스 1을 비교
            if numbers[j] > numbers[j+1]:
                numbers[j], numbers[j+1] = numbers[j+1], numbers[j]

    result = ' '.join(map(str, numbers))

    print('#{} {}'.format(tc, result))
# [다른 풀이]

import sys
sys.stdin = open("input.txt")

T = int(input())

for tc in range(1, T + 1):
    N = int(input()) # N = 5
    N_list = list(map(int, input().split())) # N_list = [1, 4, 7, 8, 0]
    for i in range(N - 1): # range(4) : 0, 1, 2, 3
        for j in range(N - i - 1): # range(4)니까, 
        					 	   # i = 0 # j = range(4), 0, 1, 2, 3
         					 	   # i = 1 # j = range(3), 0, 1, 2                                   
        					 	   # i = 2 # j = range(2), 0, 1
         					 	   # i = 3 # j = range(1), 0                                  
            if N_list[j] > N_list[j + 1]:
                N_list[j], N_list[j + 1] = N_list[j + 1], N_list[j]

    print("#{} {}".format(tc, ' '.join([str(i) for i in N_list])))

 


 

🍦 [복습]

 

# 1. 210218

 

리스트의 대괄호를 벗겨내고 싶을 때는 join을 사용해주면 되는데,

' '.join() 을 사용하려면 str값으로 mapping을 해줘야 한다!

' '.join(map(str, numbers)

 

# 2. 210225

 

복습 완료