[๋ฐฑ์ค€๐Ÿ…4] 14499 - ์ฃผ์‚ฌ์œ„ ๊ตด๋ฆฌ๊ธฐ (Python)

eziยท2024๋…„ 6์›” 24์ผ

Review

์ฃผ์‚ฌ์œ„๋ผ๋Š” ๋‹จ์–ด์— ์ซ„์•˜๋‹ค.
๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์ค‘์š”ํ•œ๊ฑด "๊ทœ์น™"์„ ์ฐพ์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ
๋จธ๋ฆฟ์†์œผ๋กœ ๊ทธ๋ ค๋ดค์„ ๋•Œ ์•ˆ๋œ๋‹ค ํ•˜๋”๋ผ๋„,
๋ฐ”๋กœ ๋‚จ์˜ ํ•ด์„ค์„ ๋ณด๋Š” ๊ฒƒ๋ณด๋‹ค,
์†์œผ๋กœ๋„ ์จ๋ณด๊ณ  ํ˜ผ์ž ๊ทœ์น™์„ ์ฐพ์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๋Š” ์‹œ๊ฐ„์ด ํ›จ์”ฌ ๊ฐ’์ง€๋‹ค!

โœจ HOW? ์ฒ˜์Œ ์•„์ด๋””์–ด

์ผ๋‹จ ๋ฐฉํ–ฅ์ด ๋‚˜์˜ค๋‹ˆ, dx/dy๋ฅผ ๋– ์˜ฌ๋ ธ๋‹ค.

์•„, ๊ทธ๋ฆฌ๊ณ  dx/dy ์„ค์ •ํ•  ๋•Œ ์•„๋ฌด๋ ‡๊ฒŒ ๋‘๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ
์กฐ๊ฑด์—์„œ ์š”๊ตฌํ•˜๋Š” ์‚ฌํ•ญ๋Œ€๋กœ ๋งž์ถ”์ž.

์ด ๋ฌธ์ œ์—์„  ๋™์„œ๋ถ๋‚จ์ด๋‹ˆ,

dx = [0, 0, -1, 1]
dy = [1, -1, 0, 0]

โœจ HOW? ์ฃผ์‚ฌ์œ„ ๊ทœ์น™

์ฃผ์‚ฌ์œ„์˜ ๋ฉด์ด [1,2,3,4,5,6] ์žˆ์„ ๋•Œ [์œ„, ๋’ค, ์˜ค๋ฅธ, ์™ผ, ์•ž, ๋ฐ”๋‹ฅ] ์ด๋ผ๋Š” ๊ธฐ์ค€์„ ๋‘๊ณ ,
"๋™์„œ๋‚จ๋ถ ๊ฐ ๋ฐฉํ–ฅ์œผ๋กœ ๊ตด๋ ธ์„ ๋•Œ ์ด ์ธ๋ฑ์Šค๋“ค์ด ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋‚˜"๋งŒ ์ฐพ์•˜์œผ๋ฉด ๋๋‹ค.

Code

'''
์ฃผ์‚ฌ์œ„๋Š” ์ง€๋„ ์œ„์— ์œ— ๋ฉด์ด 1์ด๊ณ , ๋™์ชฝ์„ ๋ฐ”๋ผ๋ณด๋Š” ๋ฐฉํ–ฅ์ด 3์ธ ์ƒํƒœ๋กœ ๋†“์—ฌ์ ธ ์žˆ์œผ๋ฉฐ,  > ???
๋†“์—ฌ์ ธ ์žˆ๋Š” ๊ณณ์˜ ์ขŒํ‘œ๋Š” (x, y) ์ด๋‹ค. ๊ฐ€์žฅ ์ฒ˜์Œ์— ์ฃผ์‚ฌ์œ„์—๋Š” ๋ชจ๋“  ๋ฉด์— 0์ด ์ ํ˜€์ ธ ์žˆ๋‹ค. > ๊ทธ๋ž˜์„œ ์ฃผ์‚ฌ์œ„๋Š” 6๋ฉด์ด ๋‹ค 0์ด๋ผ๋Š” ๋ง??

์ง€๋„์˜ ๊ฐ ์นธ์—๋Š” ์ •์ˆ˜๊ฐ€ ํ•˜๋‚˜์”ฉ ์“ฐ์—ฌ์ ธ ์žˆ๋‹ค. 
์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ ธ์„ ๋•Œ, ์ด๋™ํ•œ ์นธ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ 0์ด๋ฉด, 
์ฃผ์‚ฌ์œ„์˜ ๋ฐ”๋‹ฅ๋ฉด์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ ์นธ์— ๋ณต์‚ฌ๋œ๋‹ค. 

0์ด ์•„๋‹Œ ๊ฒฝ์šฐ์—๋Š”, ์นธ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ ์ฃผ์‚ฌ์œ„์˜ ๋ฐ”๋‹ฅ๋ฉด์œผ๋กœ ๋ณต์‚ฌ๋˜๋ฉฐ, 
์นธ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๋Š” 0์ด ๋œ๋‹ค.

์ฃผ์‚ฌ์œ„๋ฅผ ๋†“์€ ๊ณณ์˜ ์ขŒํ‘œ์™€ ์ด๋™์‹œํ‚ค๋Š” ๋ช…๋ น์ด ์ฃผ์–ด์กŒ์„ ๋•Œ,
์ฃผ์‚ฌ์œ„๊ฐ€ ์ด๋™ํ–ˆ์„ ๋•Œ ๋งˆ๋‹ค ์ƒ๋‹จ์— ์“ฐ์—ฌ ์žˆ๋Š” ๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. > ???

์ฃผ์‚ฌ์œ„๋Š” ์ง€๋„์˜ ๋ฐ”๊นฅ์œผ๋กœ ์ด๋™์‹œํ‚ฌ ์ˆ˜ ์—†๋‹ค. 
๋งŒ์•ฝ ๋ฐ”๊นฅ์œผ๋กœ ์ด๋™์‹œํ‚ค๋ ค๊ณ  ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ๋ช…๋ น์„ ๋ฌด์‹œํ•ด์•ผ ํ•˜๋ฉฐ, ์ถœ๋ ฅ๋„ ํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.
'''

'''์ฒซ์งธ ์ค„์— ์ง€๋„์˜ ์„ธ๋กœ ํฌ๊ธฐ N, ๊ฐ€๋กœ ํฌ๊ธฐ M (1 โ‰ค N, M โ‰ค 20), 
์ฃผ์‚ฌ์œ„๋ฅผ ๋†“์€ ๊ณณ์˜ ์ขŒํ‘œ x, y(0 โ‰ค x โ‰ค N-1, 0 โ‰ค y โ‰ค M-1), 
๊ทธ๋ฆฌ๊ณ  ๋ช…๋ น์˜ ๊ฐœ์ˆ˜ K (1 โ‰ค K โ‰ค 1,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
๋™์ชฝ์€ 1, ์„œ์ชฝ์€ 2, ๋ถ์ชฝ์€ 3, ๋‚จ์ชฝ์€ 4๋กœ ์ฃผ์–ด์ง„๋‹ค
์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ์ฃผ์‚ฌ์œ„์˜ ์œ— ๋ฉด์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.'''

''' ๋ฐฉํ–ฅ์ด ์žˆ์œผ๋‹ˆ dx dy'''

n, m, x, y, k = map(int, input().split())
arr = []
for _ in range(n):
    arr.append(list(map(int, input().split())))
directions = list(map(int, input().split()))

'''๋™์„œ๋ถ๋‚จ ์œผ๋กœ ๋ฐฉํ–ฅ ์„ค์ •'''
dx = [0, 0, -1, 1]
dy = [1, -1, 0, 0]
dice = [0, 0, 0, 0, 0, 0]

def turn(direction):
    a, b, c, d, e, f = dice[0], dice[1], dice[2], dice[3], dice[4], dice[5]
    if direction == 1:
        dice[0], dice[1], dice[2], dice[3], dice[4], dice[5] = d, b, a, f, e, c
        
    elif direction == 2:
        dice[0], dice[1], dice[2], dice[3], dice[4], dice[5] = c, b, f, a, e, d
        
    elif direction == 3:
        dice[0], dice[1], dice[2], dice[3], dice[4], dice[5] = e, a, c, d, f, b
        
    elif direction == 4:
        dice[0], dice[1], dice[2], dice[3], dice[4], dice[5] = b, f, c, d, a, e
    
for d in directions:
    if 0 <= x + dx[d-1] < n and 0 <= y + dy[d-1] < m:
        x = x + dx[d-1]
        y = y + dy[d-1]
        turn(d)
        
        if arr[x][y] == 0:
            arr[x][y] = dice[5] 
        
        else:
            dice[5] = arr[x][y]
            arr[x][y] = 0
        
        print(dice[0])

์‹œ๊ฐ„๋ณต์žก๋„

O(n)
profile
์ฐจ๊ณก์ฐจ๊ณก

0๊ฐœ์˜ ๋Œ“๊ธ€