๐Ÿงฉ Algorithm/SWEA

[SWEA] 1961. ์ˆซ์ž ๋ฐฐ์—ด ํšŒ์ „ (Python/D2)

devCloud 2024. 10. 18. 16:06
728x90

[๋ฌธ์ œ ๋งํฌ] ๐Ÿ‘‰ 

 

SW Expert Academy

SW ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”์— ๋„์›€์ด ๋˜๋Š” ๋‹ค์–‘ํ•œ ํ•™์Šต ์ปจํ…์ธ ๋ฅผ ํ™•์ธํ•˜์„ธ์š”!

swexpertacademy.com

 


์„ค๋ช…

N x N ํ–‰๋ ฌ์ด ์ฃผ์–ด์งˆ ๋•Œ,

์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ 90๋„, 180๋„, 270๋„ ํšŒ์ „ํ•œ ๋ชจ์–‘์„ ์ถœ๋ ฅํ•˜๋ผ.

 

[์ œ์•ฝ ์‚ฌํ•ญ]
N์€ 3 ์ด์ƒ 7 ์ดํ•˜์ด๋‹ค.

 

ํ’€์ด

1. ์ด์ค‘ ๋ฆฌ์ŠคํŠธ๋กœ ์ž…๋ ฅ ๋ฐ›๊ธฐ

 num_list = []
    for _ in range(n):
        num_list.append(list(map(int, input().split())))

 

๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์„ ์‚ฌ์šฉํ•ด์„œ ์ž…๋ ฅ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•

num_list = [list(map(int, input().split())) for _ in range(n)]

 

 

2. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋ฒˆํ˜ธ ์ถœ๋ ฅ

print("#%d" %tc)

 

 

3. 90๋„, 180๋„, 270๋„๋กœ ํšŒ์ „ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋‹ด์„ ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ

east = [[0 for _ in range(n)] for _ in range(n)]
north = [[0 for _ in range(n)] for _ in range(n)]
west = [[0 for _ in range(n)] for _ in range(n)]
  • 90๋„ = east, 180๋„ = north, 270๋„ = west๋กœ ๊ตฌ๋ถ„ํ–ˆ๋‹ค.
  • N x N ๋งŒํผ ์ด์ค‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

 

4. ๊ฐ์ž ํšŒ์ „์‹œํ‚ค๊ณ  ์ƒ์„ฑํ•œ ๋ฆฌ์ŠคํŠธ์— ๋‹ด๋Š”๋‹ค.

    for i in range(n): 
        for j in range(n):
            east[i][j] = num_list[n-1-j][i] #90๋„
            north[i][j] = num_list[n-1-i][n-1-j] #180๋„
            west[i][j] = num_list[j][n-1-i] #270๋„

 

 

ํšŒ์ „ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋‹ด์€ ๋ฆฌ์ŠคํŠธ๋“ค์„ ์ถœ๋ ฅํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

[[7, 4, 1], [8, 5, 2], [9, 6, 3]]
[[9, 8, 7], [6, 5, 4], [3, 2, 1]]
[[3, 6, 9], [2, 5, 8], [1, 4, 7]]
  • ์ถœ๋ ฅํ•  ์–‘์‹์— ๋งž์ถฐ์„œ ์ถœ๋ ฅํ•˜๋ ค๋ฉด ๊ฐ ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๊นŒ์ง€ ์ฐจ๋ก€๋กœ ์ถœ๋ ฅ์‹œ์ผœ์•ผ ํ•œ๋‹ค.
  • ๊ทธ๋ž˜์„œ for๋ฌธ์„ ํ†ตํ•ด ์ถœ๋ ฅํ•˜๋Š”๋ฐ ๊ณต๋ฐฑ์ด ์—†์–ด์•ผ ํ•˜๋ฉฐ 90๋„ ๋”ฐ๋กœ, 180๋„ ๋”ฐ๋กœ, 270๋„ ๋”ฐ๋กœ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•œ๋‹ค.

 

5. ๊ฒฐ๊ณผ ์ถœ๋ ฅ

    for i in range(n): 
        print(*east[i], sep='', end=' ')
        print(*north[i], sep='', end=' ')
        print(*west[i], sep='')

 

  • *๋ฆฌ์ŠคํŠธ : ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ ์š”์†Œ๊ฐ€ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค.
    • * ์—ฐ์‚ฐ์ž๋Š” ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋ฅผ **์–ธํŒจํ‚น(unpacking)**ํ•˜์—ฌ, ๋ฆฌ์ŠคํŠธ ์ž์ฒด๊ฐ€ ์•„๋‹Œ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ ์š”์†Œ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.
    • ์ด๋ฅผ ํ†ตํ•ด ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋ฅผ ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ ์ค„๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.
  • sep=' ' : ๊ณต๋ฐฑ ์—†์ด ์ถœ๋ ฅ
  • end='  ' : ํ•œ ์ค„์— ์ด์–ด์„œ ์ถœ๋ ฅ

 

Solution

test_case = int(input())
for tc in range(1, test_case + 1):
    n = int(input())
    num_list = []
    for _ in range(n):
        num_list.append(list(map(int, input().split())))
    print("#%d" %tc)
    
    east = [[0 for _ in range(n)] for _ in range(n)]
    north = [[0 for _ in range(n)] for _ in range(n)]
    west = [[0 for _ in range(n)] for _ in range(n)]
    
    for i in range(n):
        for j in range(n):
            east[i][j] = num_list[n-1-j][i] #90๋„
            north[i][j] = num_list[n-1-i][n-1-j] #180๋„
            west[i][j] = num_list[j][n-1-i] #270๋„

    for i in range(n):
        print(*east[i], sep='', end=' ')
        print(*north[i], sep='', end=' ')
        print(*west[i], sep='')

 

 

๐Ÿ‘ฉ‍๐Ÿ’ป ํšŒ๊ณ 

๋ฌธ์ œ ์ดํ•ด์™€ ํšŒ์ „์‹œํ‚ค๋Š”๋ฐ๊นŒ์ง€๋Š” ๋ณ„ ๋ฌธ์ œ ์—†์—ˆ๋Š”๋ฐ.. ์ถœ๋ ฅ์‹œํ‚ค๋Š”๋ฐ ๊ฝค ์‹œ๊ฐ„์„ ์Ÿ์•˜๋‹ค. ํ›„ ๊ทธ๋ž˜๋„ ์›ํŠธ์— ์„ฑ๊ณตํ•ด์„œ ๋‹คํ–‰์ด๋‹ค.


 

728x90