단순한 구현문제이다.
문제의 조건중에
왼쪽 방향에 아직 청소하지 않은 공간이 존재한다면, 그 방향으로 회전한 다음 한 칸을 전진하고 1번부터 진행한다.
중에 "그 방향으로 회전한 다음 한칸 전진하고" 라는 부분을 빼먹어서 틀렸다..
문제를 잘 읽자..
package com.company;
import java.io.*;
import java.util.*;
public class Main {
static int[] totalPrice;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[][] map = new int[N][M];
st = new StringTokenizer(br.readLine());
int count=0;
int full=0;
int X=Integer.parseInt(st.nextToken());
int Y=Integer.parseInt(st.nextToken());
int direction=Integer.parseInt(st.nextToken());
for(int i=0;i<N;i++){
st = new StringTokenizer(br.readLine());
for(int j=0;j<M;j++){
map[i][j]=Integer.parseInt(st.nextToken());
if(map[i][j]==0)
full++;
}
}
map[X][Y]=2;//청소완료
count++;
int tryMove=0;
boolean Move = true;
while(Move){
tryMove++;
int nextX=X;
int nextY=Y;
if(direction==0){
nextY=Y-1;
}else if(direction==1){
nextX=X-1;
}else if(direction==2){
nextY=Y+1;
}else if(direction==3){
nextX=X+1;
}
if(map[nextX][nextY]==0){
map[nextX][nextY]=2;
X=nextX;
Y=nextY;
count++;
tryMove=0;
direction--;
if (direction==-1)
direction=3;
continue;
}
if(tryMove!=5&&(map[nextX][nextY]==1||map[nextX][nextY]==2)){
direction--;
if(direction==-1){
direction=3;
}
continue;
}
if(tryMove==5){
//System.out.println("Try Back");
int backX=X;
int backY=Y;
if(direction==0){
backX=X+1;
}else if(direction==1){
backY=Y-1;
}else if(direction==2){
backX=X-1;
}else if(direction==3) {
backY=Y+1;
}
if(map[backX][backY]==1){
Move=false;
}else{
tryMove=0;
X=backX;
Y=backY;
continue;
}
}
}
System.out.println(count);
bw.flush();
bw.close();
}
}
'문제풀이' 카테고리의 다른 글
백준 2042 구간합 JAVA (0) | 2020.12.22 |
---|---|
백준 11559번 Puyo Puyo JAVA (0) | 2020.12.02 |
백준 1717번 집합의 표현 JAVA (0) | 2020.11.30 |
백준 1005 ACMCraft JAVA (0) | 2020.11.27 |
백준 4485번 초록색 옷 입은 애가 젤다지? (0) | 2020.11.27 |