๊ด€๋ฆฌ ๋ฉ”๋‰ด

C-log

๐Ÿงช์‚ฝ์ž…์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์—ฐ์Šต ๋ณธ๋ฌธ

๐Ÿง Algorithm/Baekjoon๐Ÿ’ก

๐Ÿงช์‚ฝ์ž…์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์—ฐ์Šต

4:Bee 2024. 1. 16. 01:02
728x90

์ด์ „ ํฌ์ŠคํŒ…์— ์ฝ”๋“œ์ƒ ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์„œ ๋‹ค์‹œ ํฌ์ŠคํŒ…์„ ํ•œ๋‹ค.

๋”๋ณด๊ธฐ

์‚ฝ์ž… ์ •๋ ฌ์€ ์•ž๊ณผ ๋’ค๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ž‘์€ ๊ฐ’์„ ์ขŒ์ธก์œผ๋กœ ์‚ฝ์ž…์‹œํ‚ค๋Š” ๋ฐฉ์‹์ด๋‹ค. ๊ทธ๋ž˜์„œ i๋Š” ๋‘ ๋ฒˆ์งธ for๋ฌธ์˜ ๋ฒ”์œ„์˜ ๊ธฐ์ค€์„ ์ •ํ•˜๋Š” ๋ฒ”์œ„์ด๊ธฐ์— 1๋ถ€ํ„ฐ ์‹œ์ž‘์„ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  j์˜ ๊ฐ’์€ i-1์ธ ์ขŒ์ธก ์•ž๋ถ€๋ถ„์˜ ๊ฐ’์„ ๊ฐ€์ง€๊ณ ์™€ ์—ญ์ˆœ์œผ๋กœ ์ง„ํ–‰์„ ํ•œ๋‹ค.

array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8]

for i in range(1, len(array)):
    print(f"[{i}]")
    for j in range(i-1, 0, -1):  # ์™œ ์—ญ์ˆœ์ธ์ง€ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ..
        # print(j)
        print(f"{array[j]} < {array[j-1]}")
        if array[j] < array[j-1]:  # i๋ฒˆ์งธ๋ž‘ ๋ฐ”๊พธ๋ฉด ๊ธฐ์ค€์ธ i์˜ ๊ฐ’๊ณผ ํ˜ผ๋™์ด ๋œ๋‹ค.
            array[j-1], array[j] = array[j], array[j-1]
        else:
            break
        print(array)

# print(array)
 
[1] # ์ฒซ ๋ฒˆ์งธ ๋ฐฐ์—ด์—์„œ์˜ ๋ฒ”์œ„๊ฐ€ 0๊ณผ 0์ด๊ธฐ์— ๋ฌธ์ž์—ด์„ ์ฝ์„ ์ˆ˜ ์—†๋‹ค.
------------------------------------
[2]  
5 < 7
[5, 7, 9, 0, 3, 1, 6, 2, 4, 8]
------------------------------------
[3]
9 < 7 # false์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ต์ฒด๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.
------------------------------------
[4]
0 < 9
[5, 7, 0, 9, 3, 1, 6, 2, 4, 8]
0 < 7
[5, 0, 7, 9, 3, 1, 6, 2, 4, 8]
0 < 5
[0, 5, 7, 9, 3, 1, 6, 2, 4, 8]
------------------------------------
[5]
3 < 9
[0, 5, 7, 3, 9, 1, 6, 2, 4, 8]
3 < 7
[0, 5, 3, 7, 9, 1, 6, 2, 4, 8]
3 < 5
[0, 3, 5, 7, 9, 1, 6, 2, 4, 8]
3 < 0
------------------------------------
[6]
1 < 9
[0, 3, 5, 7, 1, 9, 6, 2, 4, 8]
1 < 7
[0, 3, 5, 1, 7, 9, 6, 2, 4, 8]
1 < 5
[0, 3, 1, 5, 7, 9, 6, 2, 4, 8]
1 < 3
[0, 1, 3, 5, 7, 9, 6, 2, 4, 8]
1 < 0
------------------------------------
[7]
6 < 9
[0, 1, 3, 5, 7, 6, 9, 2, 4, 8]
6 < 7
[0, 1, 3, 5, 6, 7, 9, 2, 4, 8]
6 < 5
------------------------------------
[8]
2 < 9
[0, 1, 3, 5, 6, 7, 2, 9, 4, 8]
2 < 7
[0, 1, 3, 5, 6, 2, 7, 9, 4, 8]
2 < 6
[0, 1, 3, 5, 2, 6, 7, 9, 4, 8]
2 < 5
[0, 1, 3, 2, 5, 6, 7, 9, 4, 8]
2 < 3
[0, 1, 2, 3, 5, 6, 7, 9, 4, 8]
2 < 1
------------------------------------
[9]
4 < 9
[0, 1, 2, 3, 5, 6, 7, 4, 9, 8]
4 < 7
[0, 1, 2, 3, 5, 6, 4, 7, 9, 8]
4 < 6
[0, 1, 2, 3, 5, 4, 6, 7, 9, 8]
4 < 5
[0, 1, 2, 3, 4, 5, 6, 7, 9, 8]
4 < 3
์ฒซ ๋ฒˆ์งธ for๋ฌธ ๊ธฐ์ค€์œผ๋กœ ์ธ์ž๋ฅผ ์ „๋‹ฌ ๋ฐ›์•˜์„ ๋•Œ์˜ ๋ชจ์Šต

์ฒซ ๋ฒˆ์งธ for๋ฌธ์˜ ์‹œ์ž‘์€ 1์ด๋‹ค. ๊ฒฐ๊ตญ ์ธ์ž 7์„ ์ œ์™ธํ•˜๊ณ  idx 1๋ถ€ํ„ฐ ์‹œ์ž‘์ด๋‹ค. ํ•˜์ง€๋งŒ ๋‘ ๋ฒˆ์งธ for๋ฌธ์—์„œ ์‹œ์ž‘์€ i -1๋ถ€ํ„ฐ ์‹œ์ž‘์„ ํ•œ๋‹ค. ๊ฒฐ๊ตญ ์‹œ์ž‘๊ณผ ๋์€ 0๊ณผ 0์ด๊ธฐ์— if๋ฌธ์— ํ•ด๋‹น ๋˜์ง€ ์•Š์•„ ์•„๋ฌด ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋‹ค์Œ ๋ฒˆ์งธ๋กœ ๋Œ๋ ธ์„ ๋•Œ์˜ ๋ชจ์Šต์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

๊ทธ๋ ‡๊ฒŒ ์ฒซ ๋ฒˆ์งธ for๋ฌธ์„ ๊ธฐ์ค€์œผ๋กœ ์ขŒ์ธก๊ณผ ๊ณ„์†ํ•ด์„œ ๋น„๊ต๋ฅผ ํ•˜๊ณ  ๋น„๊ต์‹œ ํ•ด๋‹น if๋ฌธ ์กฐ๊ฑด์— ์ถฉ์กฑ์„ํ•˜๋ฉด ์„œ๋กœ swap์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์ฒซ ๋ฒˆ์งธ for๋ฌธ์˜ ๋ฒ”์œ„๊ฐ€ ๋„“์–ด์ง€๋ฉด ๋‘๋ฒˆ์งธ for๋ฌธ์—์„œ ๋ชจ๋“  ๊ฐ’๋“ค์„ ๋น„๊ตํ•˜๋ฉด์„œ ํ•˜๋‚˜ ํ•˜๋‚˜ ์กฐ๊ฑด์— ๋งž๋Š”์ง€ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์˜ค๋ฆ„์ฐจ์ˆœ์ด ์•„๋‹Œ ๋‚ด๋ฆผ ์ฐจ์ˆœ์œผ๋กœ๋„ ๋งŒ๋“ค์–ด๋ณด๊ธฐ

N = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8]
for std in range(1, len(N)):  # 5(2)
    for j in range(std, 0, -1):  # ์—ญ์ˆœ์œผ๋กœ ๊ฐ์†Œ(์ฐจ๊ฐ)ํ•˜๋ฉด์„œ
        print(j, end=" ")
        if N[j] < N[j-1]:  # ์•ž๊ณผ ๋’ค๋ฅผ ์‚ดํ”ผ๋ฉด์„œ ์™ผ์ชฝ์œผ๋กœ ๋‹น๊ฒจ์•ผํ•œ๋‹ค.
            N[j], N[j-1] = N[j-1], N[j]
    print(N)
 
1 [5, 7, 9, 0, 3, 1, 6, 2, 4, 8]
2 1 [5, 7, 9, 0, 3, 1, 6, 2, 4, 8]
3 2 1 [0, 5, 7, 9, 3, 1, 6, 2, 4, 8]
4 3 2 1 [0, 3, 5, 7, 9, 1, 6, 2, 4, 8]
5 4 3 2 1 [0, 1, 3, 5, 7, 9, 6, 2, 4, 8]
6 5 4 3 2 1 [0, 1, 3, 5, 6, 7, 9, 2, 4, 8]
7 6 5 4 3 2 1 [0, 1, 2, 3, 5, 6, 7, 9, 4, 8]
8 7 6 5 4 3 2 1 [0, 1, 2, 3, 4, 5, 6, 7, 9, 8]
9 8 7 6 5 4 3 2 1 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 

์‚ฝ์ž…์ •๋ ฌ๊ณผ ์„ ํƒ์ •๋ ฌ์˜ ์ฐจ์ด๋Š” ์„ ํƒ์ •๋ ฌ์€ ์ „์ฒด์ ์ธ ๋ฒ”์œ„๋ฅผ ๋ชจ๋‘ ํ›‘์–ด ๋ณด๋ฉด์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ฐพ๊ณ  ๊ทธ ๊ฐ’์„ ๋งจ ๋’ค(์˜ค๋ฅธ์ชฝ)์œผ๋กœ ๋ฐ€๋ ค๊ฐ€๋ฉด์„œ ์žฌ ์ •๋ ฌ์„ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์‚ฝ์ž…์ •๋ ฌ์€ ํ•˜๋‚˜์˜ ๊ธฐ์ค€์„ ์ •ํ•ด์„œ ์—ญ์œผ๋กœ(๊ธฐ์ค€์œผ๋กœ index 0๊นŒ์ง€) ์‚ดํŽด๋ณด๋ฉด์„œ ๊ฐ’๋“ค์„ ์ขŒ์ธก์œผ๋กœ ๋‹น๊ฒจ๊ฐ€๋ฉฐ ์žฌ์ •๋ ฌ์„ ํ•œ๋‹ค.

์œ„์˜ ๋ฐฉ์‹๋„ ์žˆ์ง€๋งŒ ์ • ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ’์„ ํ›‘์–ด๋ณด๋Š” ๋ฐฉ์‹๋„ ์žˆ๋‹ค.

๋”๋ณด๊ธฐ
 
N = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8]
for i in range(1, len(N)):
    std = i  # 5
    for j in range(len(N)):
        if N[std] < N[j]:
            N[std], N[j] = N[j], N[std]
    print(N)
 
728x90
Comments