[BOJ][๐ŸŸก5][๋ฐฑ์ค€#03190] ๋ฑ€

์ž‘์„ฑ:    

์—…๋ฐ์ดํŠธ:

์นดํ…Œ๊ณ ๋ฆฌ:

ํƒœ๊ทธ: , , ,

๋ฌธ์ œ ์ถœ์ฒ˜

BAEKJOON Online Judge #3190


๋ฌธ์ œ

ย โ€™Dummyโ€™ ๋ผ๋Š” ๋„์Šค๊ฒŒ์ž„์ด ์žˆ๋‹ค. ์ด ๊ฒŒ์ž„์—๋Š” ๋ฑ€์ด ๋‚˜์™€์„œ ๊ธฐ์–ด๋‹ค๋‹ˆ๋Š”๋ฐ, ์‚ฌ๊ณผ๋ฅผ ๋จน์œผ๋ฉด ๋ฑ€ ๊ธธ์ด๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค. ๋ฑ€์ด ์ด๋ฆฌ์ €๋ฆฌ ๊ธฐ์–ด๋‹ค๋‹ˆ๋‹ค๊ฐ€ ๋ฒฝ ๋˜๋Š” ์ž๊ธฐ์ž์‹ ์˜ ๋ชธ๊ณผ ๋ถ€๋”ชํžˆ๋ฉด ๊ฒŒ์ž„์ด ๋๋‚œ๋‹ค. ๊ฒŒ์ž„์€ NxN ์ •์‚ฌ๊ฐย ๋ณด๋“œ์œ„์—์„œ ์ง„ํ–‰๋˜๊ณ , ๋ช‡๋ช‡ ์นธ์—๋Š”ย ์‚ฌ๊ณผ๊ฐ€ ๋†“์—ฌ์ ธ ์žˆ๋‹ค. ๋ณด๋“œ์˜ ์ƒํ•˜์ขŒ์šฐ ๋์— ๋ฒฝ์ด ์žˆ๋‹ค. ๊ฒŒ์ž„์ด ์‹œ์ž‘ํ• ๋•Œ ๋ฑ€์€ ๋งจ์œ„ ๋งจ์ขŒ์ธก์— ์œ„์น˜ํ•˜๊ณ  ๋ฑ€์˜ ๊ธธ์ด๋Š” 1 ์ด๋‹ค. ๋ฑ€์€ ์ฒ˜์Œ์— ์˜ค๋ฅธ์ชฝ์„ ํ–ฅํ•œ๋‹ค. ๋ฑ€์€ ๋งค ์ดˆ๋งˆ๋‹ค ์ด๋™์„ ํ•˜๋Š”๋ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์„ ๋”ฐ๋ฅธ๋‹ค.

๋จผ์ € ๋ฑ€์€ ๋ชธ๊ธธ์ด๋ฅผ ๋Š˜๋ คย ๋จธ๋ฆฌ๋ฅผย ๋‹ค์Œ์นธ์— ์œ„์น˜์‹œํ‚จ๋‹ค. ๋งŒ์•ฝ ์ด๋™ํ•œ ์นธ์— ์‚ฌ๊ณผ๊ฐ€ ์žˆ๋‹ค๋ฉด, ๊ทธ ์นธ์— ์žˆ๋˜ ์‚ฌ๊ณผ๊ฐ€ ์—†์–ด์ง€๊ณ  ๊ผฌ๋ฆฌ๋Š” ์›€์ง์ด์ง€ ์•Š๋Š”๋‹ค. ๋งŒ์•ฝ ์ด๋™ํ•œ ์นธ์— ์‚ฌ๊ณผ๊ฐ€ ์—†๋‹ค๋ฉด, ๋ชธ๊ธธ์ด๋ฅผ ์ค„์—ฌ์„œ ๊ผฌ๋ฆฌ๊ฐ€ ์œ„์น˜ํ•œ ์นธ์„ ๋น„์›Œ์ค€๋‹ค. ์ฆ‰, ๋ชธ๊ธธ์ด๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์‚ฌ๊ณผ์˜ ์œ„์น˜์™€ ๋ฑ€์˜ ์ด๋™๊ฒฝ๋กœ๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ์ด ๊ฒŒ์ž„์ด ๋ช‡ ์ดˆ์— ๋๋‚˜๋Š”์ง€ ๊ณ„์‚ฐํ•˜๋ผ.


์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋ณด๋“œ์˜ ํฌ๊ธฐ N์ด ์ฃผ์–ด์ง„๋‹ค. (2 โ‰ค N โ‰ค 100) ๋‹ค์Œ ์ค„์— ์‚ฌ๊ณผ์˜ ๊ฐœ์ˆ˜ย K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (0 โ‰ค K โ‰ค 100) ๋‹ค์Œ K๊ฐœ์˜ ์ค„์—๋Š” ์‚ฌ๊ณผ์˜ ์œ„์น˜๊ฐ€ ์ฃผ์–ด์ง€๋Š”๋ฐ, ์ฒซ ๋ฒˆ์งธ ์ •์ˆ˜๋Š”ย ํ–‰, ๋‘ ๋ฒˆ์งธ ์ •์ˆ˜๋Š”ย ์—ด ์œ„์น˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.ย ์‚ฌ๊ณผ์˜ ์œ„์น˜๋Š” ๋ชจ๋‘ ๋‹ค๋ฅด๋ฉฐ, ๋งจ ์œ„ ๋งจ ์ขŒ์ธก (1ํ–‰ 1์—ด) ์—๋Š” ์‚ฌ๊ณผ๊ฐ€ ์—†๋‹ค. ๋‹ค์Œ ์ค„์—๋Š” ๋ฑ€์˜ ๋ฐฉํ–ฅ ๋ณ€ํ™˜ ํšŸ์ˆ˜ L ์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค L โ‰ค 100) ๋‹ค์Œ L๊ฐœ์˜ ์ค„์—๋Š” ๋ฑ€์˜ ๋ฐฉํ–ฅ ๋ณ€ํ™˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง€๋Š”๋ฐ, ย ์ •์ˆ˜ X์™€ ๋ฌธ์ž C๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ. ๊ฒŒ์ž„ ์‹œ์ž‘ ์‹œ๊ฐ„์œผ๋กœ๋ถ€ํ„ฐ X์ดˆ๊ฐ€ ๋๋‚œ ๋’ค์— ์™ผ์ชฝ(C๊ฐ€ โ€˜Lโ€™) ๋˜๋Š” ์˜ค๋ฅธ์ชฝ(C๊ฐ€ โ€˜Dโ€™)๋กœ 90๋„ ๋ฐฉํ–ฅ์„ ํšŒ์ „์‹œํ‚จ๋‹ค๋Š” ๋œป์ด๋‹ค. X๋Š” 10,000 ์ดํ•˜์˜ ์–‘์˜ ์ •์ˆ˜์ด๋ฉฐ, ๋ฐฉํ–ฅ ์ „ํ™˜ ์ •๋ณด๋Š” X๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค.


์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๊ฒŒ์ž„์ด ๋ช‡ ์ดˆ์— ๋๋‚˜๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค.


์˜ˆ์ œ

์˜ˆ์ œ 1

์ž…๋ ฅ

6
3
3 4
2 5
5 3
3
3 D
15 L
17 D


์ถœ๋ ฅ

9


์˜ˆ์ œ 2

์ž…๋ ฅ

10
4
1 2
1 3
1 4
1 5
4
8 D
10 D
11 D
13 L


์ถœ๋ ฅ

21


์˜ˆ์ œ 3

์ž…๋ ฅ

10
5
1 5
1 3
1 2
1 6
1 7
4
8 D
10 D
11 D
13 L


์ถœ๋ ฅ

13


My Sol

from collections import deque

def Play():
    global mat, arr
    hi, hj, hd = 0, 0, 0
    mat[hi][hj] = 1
    Q = deque()
    Q.append((hi, hj))

    time = 0
    for t, d in arr:
        while time < t:
            forward = headSee(hi, hj, hd)
            if forward==-1: return time + 1
            si, sj = forward
            fowInfo = mat[si][sj]
            mat[si][sj] = 1
            Q.append((si, sj))
            hi, hj = si, sj

            if not fowInfo:
                li, lj = Q.popleft()
                mat[li][lj] = 0

            time += 1
        td = -1 if d=='L' else 1
        hd += td
        if not 0<=hd<4:
            hd %= 4


def headSee(i, j, d):
    di, dj = dd[d]
    si, sj = i+di, j+dj
    if not (0<=si<N and 0<=sj<N): return -1
    if mat[si][sj]==1: return -1
    return si, sj

N = int(input())
mat = [[0]*N for _ in range(N)]
AN = int(input())
for _ in range(AN):
    i, j = map(int, input().split())
    mat[i-1][j-1] = 4

L = int(input())
arr = []
for _ in range(L):
    t, d = input().split()
    arr.append((int(t), d))
arr.append((10000,''))

dd = [(0,1), (1,0), (0,-1), (-1,0)]
print(Play())

๋จธ๋ฆฌ์˜ ์œ„์น˜์™€ ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ ๋‹ค์Œ ์ด๋™ํ•ด์•ผํ•  ์ขŒํ‘œ๋ฅผ didj ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•ด ๋งŒ๋“ค์—ˆ๊ณ , ๋ฐฉํ–ฅ์„ 0๋ถ€ํ„ฐ 3๊นŒ์ง€์˜ ์ธ๋ฑ์Šค๋กœ ๋”ฐ์ ธ ์กฐํšŒํ•ด์ฃผ์—ˆ๋‹ค. ์ด๋™ํ•ด์•ผํ•  ์ขŒํ‘œ๊ฐ€ ๋ฒ”์œ„ ์™ธ์ด๊ฑฐ๋‚˜ ๋ฑ€์˜ ์‹ ์ฒด๋ผ๋ฉด -1์„, ์•„๋‹ˆ๋ผ๋ฉด ํ•ด๋‹น ์ขŒํ‘œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ headSee๋ฅผ ๋งŒ๋“ค์—ˆ๊ณ , ์ด๋ฅผ Play() ํ•จ์ˆ˜์— ๊ฐ€์ ธ๋‹ค ์‚ฌ์šฉํ•˜์˜€๋‹ค.

Play() ํ•จ์ˆ˜๋Š” ์กฐ์ž‘ ์ •๋ณด๋งˆ๋‹ค ํ•ด๋‹น ์‹œ๊ฐ์„ ๋„˜๊ธด ์‹œ์ ์—์„œ ๋ฐฉํ–ฅ์„ ํ‹€์–ด์ฃผ๊ณ  ๊ณ„์† ๋จธ๋ฆฌ์˜ ๋ฐฉํ–ฅ, ๊ทธ๋ฆฌ๊ณ  ๋จธ๋ฆฌ ์•ž์— ์žˆ๋Š” ์ขŒํ‘œ์˜ ์ •๋ณด์— ๋”ฐ๋ผ ๋ชธ์˜ ๊ธธ์ด๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. ๋จธ๋ฆฌ ์•ž์˜ ์ขŒํ‘œ์˜ ๊ฐ’์ด 0์ด์–ด์„œ ๊ผฌ๋ฆฌ๋ฅผ ๋‹ค์‹œ ์ค„์ด๋Š” ๊ฒฝ์šฐ, ์ถ”๊ฐ€๋˜๋Š” ๋จธ๋ฆฌ์˜ ์ •๋ณด๋ฅผ ๋‹ด๋Š” deque๋ฅผ ๋งŒ๋“ค์–ด, ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ์ขŒํ‘œ๋ฅผ ๊บผ๋‚ด ํ•ด๋‹น ์ขŒํ‘œ๋ฅผ 0์œผ๋กœ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค.


๊ฒฐ๊ณผ

๋งž์•˜์Šต๋‹ˆ๋‹ค!!

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ