항상 μ½”λ“œ μ§€ λ•Œ λŠλΌλŠ”κ±΄λ° 제λͺ©μ²˜λŸΌ μ–΄λŠκ²ƒμ— 더 쀑점을 두고 μ½”λ“œλ₯Ό μ§œμ•Όν• μ§€ λͺ¨λ₯΄κ² μ–΄μ„œ λ‹€λ₯Έ μ‚¬λžŒλ“€μ€ μ–΄μΌ€ μƒκ°ν•˜λŠ”μ§€ κΆκΈˆν•΄μ„œ κΈ€ μ˜¬λ €λ΄„


예λ₯Όλ“€μ–΄ λ‚΄κ°€ μ§€κΈˆ JPS μ•Œκ³ λ¦¬μ¦˜ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ³  μžˆμ–΄,Β 

근데 κ·Έλ•Œ νŒ”λ°©ν–₯에 이동 μ½”λ“œμ™€ μ½”λ„ˆλ₯Ό μ°ΎλŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ”λ°Β 


1. 직관적 

8λ°©ν–₯에 λŒ€ν•œ λ°©ν–₯별 ν•¨μˆ˜λ₯Ό 8개λ₯Ό λ‹€ μž‘μ„±ν•˜κ³  κ°€μ Έλ‹€ μ“°λŠ”κ±°Β 

ex) leftMove, rightMove ...


2. νš¨μœ¨μ„±(μ €λ°˜λ³΅)

배열을 ν•˜λ‚˜ νŒŒμ„œΒ 

int[] dir = new int[] // 이동 μ’Œν‘œμ— λŒ€ν•œ λ°°μ—΄

int[] corner = new int[] // μ½”λ„ˆ μœ„μΉ˜μ— λŒ€ν•œ μ’Œν‘œλ₯Ό κ°–λŠ” λ°°μ—΄

public void StraightMove(int dir) //이동 μ’Œν‘œμ— λŒ€ν•œ λ§€κ°œλ³€μˆ˜λ₯Ό λ°›μ•„μ„œ μ•ˆμ—μ„œ λ‘œμ§λŒ€λ‘œ μ²˜λ¦¬ν•˜λŠ” ν•¨μˆ˜

{

//ToDo ...

//λ°©ν–₯에 λ”°λ₯Έ corner 확인 처리

}

μ΄λŸ°μ‹μœΌλ‘œ ν•˜λ‚˜μ— ν•¨μˆ˜λ§Œ νŒŒμ„œ λ§€κ°œλ³€μˆ˜λ₯Ό 톡해 μž‘λ™ν•˜λŠ” μ½”λ“œ λŒ€μ‹  직관적이지 λͺ»ν•˜λ‹€λŠ” 단점이 있음


항상 μ½”λ“œλ₯Ό μ§€ λ•Œ μœ„ 두가지 경우둜 λ”œλ ˆλ§ˆμ— λΉ μ§€λŠ”λ° μ–΄λ–€ κ±Έ 더 μ„ ν˜Έν•˜λŠ”μ§€ κΆκΈˆν•¨