๊ฒŒ์ž„ ๊ฐœ๋ฐœ - ์ด๊ฒƒ์ด ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋‹ค

2020. 9. 4. 00:04ใ†์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

๊ฒŒ์ž„ ๊ฐœ๋ฐœ - ์ด๊ฒƒ์ด ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋‹ค

 

๋ฌธ์ œ :

 

ํ˜„๋ฏผ์ด๋Š” ๊ฒŒ์ž„ ์ผ€๋ฆญํ„ฐ๊ฐ€ ๋งต ์•ˆ์—์„œ ์›€์ง์ด๋Š” ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœ ์ค‘์ด๋‹ค. ์บ๋ฆญํ„ฐ๊ฐ€ ์žˆ๋Š” ์žฅ์†Œ๋Š” 1 X 1 ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ์ด๋ค„์ง„ N X M ํฌ๊ธฐ์˜ ์ง์‚ฌ๊ฐํ˜•์œผ๋กœ, ๊ฐ๊ฐ์˜ ์นธ์€ ์œก์ง€ ๋˜๋Š” ๋ฐ”๋‹ค์ด๋‹ค. ์บ๋ฆญํ„ฐ๋Š” ๋™์„œ๋‚จ๋ถ ์ค‘ ํ•œ ๊ณณ์„ ๋ฐ”๋ผ๋ณธ๋‹ค. 

๋งต์˜ ๊ฐ ์นธ์€ (A, B)๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๊ณ , A๋Š” ๋ถ์ชฝ์œผ๋กœ๋ถ€ํ„ฐ ๋–จ์–ด์ง„ ์นธ์˜ ๊ฐœ์ˆ˜, B๋Š” ์„œ์ชฝ์œผ๋กœ๋ถ€ํ„ฐ ๋–จ์–ด์ง„ ์นธ์˜ ๊ฐœ์ˆ˜์ด๋‹ค. ์บ๋ฆญํ„ฐ๋Š” ์ƒํ•˜์ขŒ์šฐ๋กœ ์›€์ง์ผ ์ˆ˜ ์žˆ๊ณ , ๋ฐ”๋‹ค๋กœ ๋˜์–ด ์žˆ๋Š” ๊ณต๊ฐ„์—๋Š” ๊ฐˆ ์ˆ˜ ์—†๋‹ค. ์บ๋ฆญํ„ฐ์˜ ์›€์ง์ž„์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ์ •ํ•ด ๋†’์€ ๋ฉ”๋‰ด์–ผ์€ ์ด๋Ÿฌํ•˜๋‹ค.

 

1. ํ˜„์žฌ ์œ„์น˜์—์„œ ํ˜„์žฌ ๋ฐฉํ–ฅ์„ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ ๋ฐฉํ–ฅ(๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ 90๋„ ํšŒ์ „ํ•œ ๋ฐฉํ–ฅ)๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๊ฐˆ ๊ณณ์„ ์ •ํ•œ๋‹ค.

2. ์บ๋ฆญํ„ฐ์˜ ๋ฐ”๋กœ ์™ผ์ชฝ ๋ฐฉํ–ฅ์— ์•„์ง ๊ฐ€๋ณด์ง€ ์•Š์€ ์นธ์ด ์กด์žฌํ•œ๋‹ค๋ฉด, ์™ผ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ•œ ๋‹ค์Œ ์™ผ์ชฝ์œผ๋กœ ํ•œ ์นธ์„ ์ „์ง„ํ•œ๋‹ค. ์™ผ์ชฝ ๋ฐฉํ–ฅ์— ๊ฐ€๋ณด์ง€ ์•Š์€ ์นธ์ด ์—†๋‹ค๋ฉด, ์™ผ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „๋งŒ ์ˆ˜ํ–‰ํ•˜๊ณ  1๋‹จ๊ณ„๋กœ ๋Œ์•„๊ฐ„๋‹ค.

3. ๋งŒ์•ฝ ๋„ค ๋ฐฉํ–ฅ ๋ชจ๋‘ ์ด๋ฏธ ๊ฐ€๋ณธ ์นธ์ด๊ฑฐ๋‚˜ ๋ฐ”๋‹ค๋กœ ๋˜์–ด ์žˆ๋Š” ์นธ์˜ ๊ฒฝ์šฐ์—๋Š”, ๋ฐ”๋ผ๋ณด๋Š” ๋ฐฉํ–ฅ์„ ์œ ์ง€ํ•œ ์ฑ„๋กœ ํ•œ ์นธ ๋’ค๋กœ ๊ฐ€๊ณ  1๋‹จ๊ณ„๋กœ ๋Œ์•„๊ฐ„๋‹ค. ๋‹จ, ์ด๋•Œ ๋’ค์ชฝ ๋ฐฉํ–ฅ์ด ๋ฐ”๋‹ค์ธ ์นธ์ด๋ผ ๋’ค๋กœ ๊ฐˆ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ์›€์ง์ž„์„ ๋ฉˆ์ถ˜๋‹ค.

 

ํ˜„๋ฏผ์ด๋Š” ์œ„ ๊ณผ์ •์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ์บ๋ฆญํ„ฐ์˜ ์›€์ง์ž„์— ์ด์ƒ์ด ์žˆ๋Š”์ง€ ํ…Œ์ŠคํŠธํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋ฉ”๋‰ด์–ผ์— ๋”ฐ๋ผ ์บ๋ฆญํ„ฐ๋ฅผ ์ด๋™์‹œํ‚จ ๋’ค์—, ์บ๋ฆญํ„ฐ๊ฐ€ ๋ฐฉ๋ฌธํ•œ ์นธ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ์‹œ์˜ค.

 

์ž…๋ ฅ ์กฐ๊ฑด :

  • ์ฒซ์งธ ์ค„์— ๋งต์˜ ์„ธ๋กœ ํฌ๊ธฐ N๊ณผ ๊ฐ€๋กœ ํฌ๊ธฐ M์„ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅํ•œ๋‹ค.(N>=3, M<=50)
  • ๋‘˜์งธ ์ค„์— ๊ฒŒ์ž„ ์บ๋ฆญํ„ฐ๊ฐ€ ์žˆ๋Š” ์นธ์˜ ์ขŒํ‘œ(A, B)์™€ ๋ฐ”๋ผ๋ณด๋Š” ๋ฐฉํ–ฅ d๊ฐ€ ๊ฐ๊ฐ ์„œ๋กœ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ฃผ์–ด์ง„๋‹ค. ๋ฐฉํ–ฅ d์˜ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

   - 0: ๋ถ์ชฝ

   - 1: ๋™์ชฝ

   - 2: ๋‚จ์ชฝ

   - 3: ์„œ์ชฝ

  • ์…‹์งธ ์ค„๋ถ€ํ„ฐ ๋งต์ด ์œก์ง€์ธ์ง€ ๋ฐ”๋‹ค์ธ์ง€ ์ž…๋ ฅํ•œ๋‹ค. N๊ฐœ์˜ ์ค„์— ๋งต์˜ ์ƒํƒœ๊ฐ€ ๋ถ์ชฝ๋ถ€ํ„ฐ ๋‚จ์ชฝ ์ˆœ์„œ๋Œ€๋กœ, ๊ฐ ์ค„์˜ ๋ฐ์ดํ„ฐ๋Š” ์„œ์ชฝ๋ถ€ํ„ฐ ๋™์ชฝ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ๋งต์˜ ์™ธ๊ณฝ์€ ํ•ญ์ƒ ๋ฐ”๋‹ค๋กœ ๋˜์–ด ์žˆ๋‹ค.

    - 0: ์œก์ง€

    - 1: ๋ฐ”๋‹ค

  • ์ฒ˜์Œ์— ๊ฒŒ์ž„ ์บ๋ฆญํ„ฐ๊ฐ€ ์œ„์น˜ํ•œ ์นธ์˜ ์ƒํƒœ๋Š” ํ•ญ์ƒ ์œก์ง€์ด๋‹ค.

์ถœ๋ ฅ ์กฐ๊ฑด :

  • ์ฒซ์งธ ์ค„์— ์ด๋™์„ ๋งˆ์นœ ํ›„ ์บ๋ฆญํ„ฐ๊ฐ€ ๋ฐฉ๋ฌธํ•œ ์นธ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๋ฌธ์ œ ์ ‘๊ทผ:

- ๋™์„œ๋‚จ๋ถ์ด ์žˆ๊ณ  ๋ฐฉํ–ฅ์ด ์กด์žฌํ•˜๋Š” ๋ฌธ์ œ. -> ๋ฐฉํ–ฅ์„ ์ด์šฉํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด ์–ด๋–จ๊นŒ? ๊ทธ ๋ฐฉํ–ฅ(dx์˜ ์ธ๋ฑ์Šค)์— ๋”ฐ๋ผ ๋ถ,๋™,๋‚จ,์„œ๋กœ ์ด๋™์„ ํ•˜๊ณ , 1์ธ๊ฒฝ์šฐ์—๋Š” ๊ฐˆ ์ˆ˜ ์—†๊ณ  0์ธ ๊ฒฝ์šฐ์—๋Š” ๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํ•ด๋ณด์ž.  

๊ฐ€๋ณด์ง€ ์•Š์€ ์นธ๊ณผ ๊ฐ€๋ณธ ์นธ์„ ์ผ€์ด์Šค๋ฅผ ๋‚˜๋ˆ ์„œ ์ƒ๊ฐํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๊ฐ”๋˜ ๊ธธ์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ํŒ๋ณ„ํ•ด์ฃผ๋Š” ๋ฌด์–ธ๊ฐ€๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ๋„ ์—ผ๋‘ํ•ด ๋‘๊ณ  ๊ฐ€์ž.

 

n,m = map(int,input().split())

x,y,direction = map(int,input().split())

array = []

for i in range(n):
  array.append(list(map(int,input().split())))

d = [[0]*m for _ in range(n)]

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

def turn_left() :
  global direction
  direction -=1
  if direction == -1 :
    direction =3


count =1
turn_time =0

while True:
  turn_left()
  nx = x + dx[direction]
  ny = y + dy[direction]
  
  if d[nx][ny] ==0 and array[nx][ny] ==0:
    d[nx][ny] =1
    x = nx
    y = ny
    count+=1
    turn_time =0
    continue
  else :
    turn_time +=1
  if turn_time ==4:
    nx = x - dx[direction]
    ny = y - dy[direction]

    if array[nx][ny] == 1:
      break
    else :
      x = nx
      y = ny
    turn_time =0

print(count)

 

๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ๋Š๋‚€์ :

- array๋ฆฌ์ŠคํŠธ์— ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›์„ ๋•Œ array = list(map(int,input().split()))๋กœ ๋ฐ›์•˜๋Š”๋ฐ, 2์ฐจ์› ๋ฐฐ์—ด์„ ์œ„ํ•ด์„œ๋Š” array.append๋ฅผ ์จ์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜๋‹ค. ์ „์ž๋กœ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๊ณ„์†ํ•ด์„œ ์ดˆ๊ธฐํ™” ๋œ array๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

- turn_left()ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ์กฐ๊ธˆ ๋” ์ž…์ฒด์ ์œผ๋กœ ๋ฐ”๋ผ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

- d= [[0]*m for _ in range(m)]๋ฐฉ์‹๋„ ์ตํ˜€๋‘ฌ์•ผ ๊ฒ ๋‹ค. 

 

- ๋งˆ์ง€๋ง‰๊นŒ์ง€ ์• ๋ฅผ ๋จน์—ˆ๋˜ ๊ฒƒ์€ turn_time =0์ด๋‹ค. ๋งˆ์ง€๋ง‰์— if๋ฌธ else๋ฌธ์„ ๋‚˜์™€์„œ ์ €๊ฑธ ๋ฐ˜๋“œ์‹œ ํ•ด์ค˜์•ผ ํ”„๋กœ๊ทธ๋žจ์ด ์ •์ƒ์ ์œผ๋กœ ์ง„ํ–‰๋œ๋‹ค. ๋งŒ์•ฝ ํ•˜์ง€์•Š์œผ๋ฉด ๊ณ„์† ๋˜‘๊ฐ™์€ ๊ฒƒ๋งŒ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋œ๋‹ค. ์ฐธ๊ณ ํ•˜์ž.