๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[BAEKJOON python] 15685_๋“œ๋ž˜๊ณค ์ปค๋ธŒ ๋ณธ๋ฌธ

๐Ÿฆฅ ์ฝ”ํ…Œ/BAEKJOON

[BAEKJOON python] 15685_๋“œ๋ž˜๊ณค ์ปค๋ธŒ

์ง•์ง•์•ŒํŒŒ์นด 2022. 10. 14. 14:13
728x90
๋ฐ˜์‘ํ˜•
๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ธ ๊ฐ€์ง€ ์†์„ฑ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ์ด์ฐจ์› ์ขŒํ‘œ ํ‰๋ฉด ์œ„์—์„œ ์ •์˜
์ขŒํ‘œ ํ‰๋ฉด์˜ x์ถ•์€ → ๋ฐฉํ–ฅ, y์ถ•์€ ↓ ๋ฐฉํ–ฅ์ด๋‹ค.
    ์‹œ์ž‘ ์ 
    ์‹œ์ž‘ ๋ฐฉํ–ฅ
    ์„ธ๋Œ€

์ฆ‰, K(K > 1)์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” K-1์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋ฅผ ๋ ์ ์„ ๊ธฐ์ค€์œผ๋กœ 90๋„ ์‹œ๊ณ„ ๋ฐฉํ–ฅ ํšŒ์ „ ์‹œํ‚จ ๋‹ค์Œ,
๊ทธ๊ฒƒ์„ ๋ ์ ์— ๋ถ™์ธ ๊ฒƒ

ํฌ๊ธฐ๊ฐ€ 100×100์ธ ๊ฒฉ์ž ์œ„์— ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๊ฐ€ N๊ฐœ ์žˆ๋‹ค.
ํฌ๊ธฐ๊ฐ€ 1×1์ธ ์ •์‚ฌ๊ฐํ˜•์˜ ๋„ค ๊ผญ์ง“์ ์ด ๋ชจ๋‘ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์ผ๋ถ€์ธ ์ •์‚ฌ๊ฐํ˜•์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑ
    ๊ฒฉ์ž์˜ ์ขŒํ‘œ๋Š” (x, y)๋กœ ๋‚˜ํƒ€๋‚ด๋ฉฐ, 0 ≤ x ≤ 100, 0 ≤ y ≤ 100๋งŒ ์œ ํšจํ•œ ์ขŒํ‘œ

์ฒซ์งธ ์ค„์— ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 20)์ด ์ฃผ์–ด์ง„๋‹ค.
๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
    ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์ •๋ณด๋Š” ๋„ค ์ •์ˆ˜ x, y, d, g๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
    x์™€ y๋Š” ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์‹œ์ž‘ ์ , d๋Š” ์‹œ์ž‘ ๋ฐฉํ–ฅ, g๋Š” ์„ธ๋Œ€์ด๋‹ค.
    (0 ≤ x, y ≤ 100, 0 ≤ d ≤ 3, 0 ≤ g ≤ 10)
์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” ๊ฒฉ์ž ๋ฐ–์œผ๋กœ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค. ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” ์„œ๋กœ ๊ฒน์น  ์ˆ˜ ์žˆ๋‹ค.
๋ฐฉํ–ฅ์€ 0, 1, 2, 3 ์ค‘ ํ•˜๋‚˜
    0: x์ขŒํ‘œ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฐฉํ–ฅ (→)
    1: y์ขŒํ‘œ๊ฐ€ ๊ฐ์†Œํ•˜๋Š” ๋ฐฉํ–ฅ (↑)
    2: x์ขŒํ‘œ๊ฐ€ ๊ฐ์†Œํ•˜๋Š” ๋ฐฉํ–ฅ (←)
    3: y์ขŒํ‘œ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฐฉํ–ฅ (↓)

์ฒซ์งธ ์ค„์— ํฌ๊ธฐ๊ฐ€ 1×1์ธ ์ •์‚ฌ๊ฐํ˜•์˜ ๋„ค ๊ผญ์ง“์ ์ด ๋ชจ๋‘ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์ผ๋ถ€์ธ ๊ฒƒ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅ    
N = int(input())
board = [[0] * 101 for _ in range(101)]

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

for _ in range(N) :
    # x์™€ y๋Š” ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์‹œ์ž‘ ์ , d๋Š” ์‹œ์ž‘ ๋ฐฉํ–ฅ, g๋Š” ์„ธ๋Œ€
    x, y, d, g = map(int, input().split())
    board[x][y] = 1
    q = [d]             # ์ด์ „์„ธ๋Œ€ ๋ฐฉํ–ฅ์—๋‹ค๊ฐ€ 1์„ ๋”ํ•˜๊ณ  ์ด๋ฅผ ๋’ค์ง‘์–ด์„œ ์ด๋™์‹œํ‚ฌ ๋ฐฉํ–ฅ

    for _ in range(g) :
        temp = []          # temp์€ ์ด์ „์„ธ๋Œ€ ๋ฐฉํ–ฅ์„ ๊ธฐ๋ก
        for i in range(len(q)) :
            temp.append((q[-i - 1] + 1) % 4)
        q.extend(temp)

    for j in q :
        nx = x + dx[j]
        ny = y + dy[j]
        board[nx][ny] = 1
        x = nx
        y = ny        
    
result = 0
    
for i in range(100) :
    for j in range(100) :
        if board[i][j] and board[i+1][j]  and board[i][j+1] and board[i+1][j+1] :
            result += 1

print(result)
728x90
๋ฐ˜์‘ํ˜•
Comments