๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โญ Personal_Study/Python

ํŒŒ์ด์ฌ 2์ฐจ์› ๋ฐฐ์—ด ์‰ฝ๊ฒŒ ํšŒ์ „ ์‹œํ‚ค๊ธฐ

by ํฌ์ŠคํŠธ์‰์ดํฌ 2022. 10. 12.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€๋‹ค๋ณด๋ฉด ์ƒํ•˜์ขŒ์šฐ ์—ฌ๋Ÿฌ๋ฐฉํ–ฅ ํ˜น์€ ์—ด๋‹จ์œ„๋กœ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

 

์ด๋Ÿด ๋•Œ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์ž‘์—…ํ•˜๊ธฐ ํŽธํ•œ ํ•œ ๋ฐฉํ–ฅ(์ฃผ๋กœ ์ง๊ด€์ ์ด๋ฉฐ ์Šฌ๋ผ์ด์‹ฑ์„ ์ด์šฉํ•˜๊ธฐ ํŽธํ•œ ์ขŒ -> ์šฐ๋กœ ํ•œ๋‹ค)์— ๋Œ€ํ•ด์„œ๋งŒ ์ฝ”๋“œ ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋ฐฉํ–ฅ์€ ๋ฐฐ์—ด์„ ํšŒ์ „ ์‹œ์ผœ์„œ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

 

์ด ๊ฒฝ์šฐ ์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ์งง์•„์ง€๊ณ  ๊น”๋”ํ•ด์ง€๋ฉฐ, ์—๋Ÿฌ๊ฐ€ ์ผ์–ด๋‚  ์ผ์ด ์ ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ๋ฐ˜๋Œ€๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋Š˜์–ด๋‚˜๊ณ  ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์˜ˆ์™ธ ์ผ€์ด์Šค๋กœ ์ธํ•ด ์˜ค๋‹ต์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์œผ๋‹ˆ ์กฐ์‹ฌํ•ด์„œ ์ ์šฉํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

 

์›๋ž˜๋ฅผ ์ด์ค‘ for๋ฌธ์„ ๋„๋Š” ๋ฐฉ๋ฒ•์ด ์ •์„(?)์ด์ง€๋งŒ ์‹ค์ œ ๋ฌธ์ œ ํ’€ ๋•Œ ์“ฐ๊ธฐ ํŽธํ•˜๋ผ๊ณ  ๊ฐ ๋ฐฉํ–ฅ ๋ณ„๋กœ ํ•œ ์ค„์”ฉ ํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ–ˆ๋‹ค.

 

๋งŒ์•ฝ ํ•™์Šต์ด ๋ชฉ์ ์ด๋ผ๋ฉด for๋ฌธ์œผ๋กœ ๊ฐ ๋ฐฉํ–ฅ๋ณ„๋กœ + ์ „์น˜๋ฐฐ์—ด๊นŒ์ง€ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๋Š” ๊ฒƒ ์ถ”์ฒœ!!

N = 3
arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „
def rotate(d):
    # 0๋„
    if d == 0:
        return arr
    # 90๋„ 
    elif d == 1:
        return list(map(list, zip(*arr[::-1])))
    # 180๋„
    elif d == 2:
        return [[arr[N - r - 1][N - c - 1] for c in range(N)] for r in range(N)]
    # 270๋„
    else:
        return list(map(list, zip(*arr)))[::-1]

 

์•„๋ž˜๋Š” ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•œ ์ถœ๋ ฅ ์˜ˆ์‹œ์ด๋‹ค.

for d in range(4):
    print(d)
    for row in rotate(d):
        print(*row)
    print()
    
'''
0
1 2 3
4 5 6
7 8 9

1
7 4 1
8 5 2
9 6 3

2
9 8 7
6 5 4
3 2 1

3
3 6 9
2 5 8
1 4 7
'''

 

๋Œ“๊ธ€